{
  "contracts": {
    "contracts/FeSwapERC20.sol:FeSwapERC20": {
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355610a8a806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea2646970667358221220122d17147d05021c5588eab24b113923e49161a1605c571b8f2237b2439b28af64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x46655377617 PUSH1 0xD4 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x84AAF7FDA2A4DCB5E79FA4719E805D2B354FAFD29C5E5E9F8F62249697C6FBCD DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH2 0xA8A DUP1 PUSH2 0xED PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4AA JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4EB JUMP JUMPDEST PUSH2 0xEC PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x536 JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x543 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4665537761700000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x82C JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x495 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x463 SWAP1 DUP4 PUSH2 0x89B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A0 DUP5 DUP5 DUP5 PUSH2 0x90D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4645535000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x90D JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20455850495245440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x713 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x78E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F5349474E415455524500000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x804 DUP10 DUP10 DUP10 PUSH2 0x82C JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x93D SWAP1 DUP3 PUSH2 0x89B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x979 SWAP1 DUP3 PUSH2 0x9E2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT 0x2D OR EQ PUSH30 0x5021C5588EAB24B113923E49161A1605C571B8F2237B2439B28AF64736F PUSH13 0x634300060C0033000000000000 ",
          "sourceMap": "144:3519:0:-:0;;;1045:460;;;;;;;;;-1:-1:-1;1367:4:0;;;;;;;;;;;-1:-1:-1;;;1367:4:0;;;;;1402:10;;;;;;;;;;-1:-1:-1;;;1402:10:0;;;;1208:278;;1237:95;1208:278;;;;1351:22;1208:278;;;;1392:21;1208:278;;;;1135:9;1208:278;;;;1466:4;1208:278;;;;;;;;;;;;;;;;;;;;;;;;;1184:313;;;;;1165:16;:332;144:3519;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea2646970667358221220122d17147d05021c5588eab24b113923e49161a1605c571b8f2237b2439b28af64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4AA JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4EB JUMP JUMPDEST PUSH2 0xEC PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x536 JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x543 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4665537761700000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x82C JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x495 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x463 SWAP1 DUP4 PUSH2 0x89B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A0 DUP5 DUP5 DUP5 PUSH2 0x90D JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4645535000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x90D JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20455850495245440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x713 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x78E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F5349474E415455524500000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x804 DUP10 DUP10 DUP10 PUSH2 0x82C JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x93D SWAP1 DUP3 PUSH2 0x89B JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x979 SWAP1 DUP3 PUSH2 0x9E2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SLT 0x2D OR EQ PUSH30 0x5021C5588EAB24B113923E49161A1605C571B8F2237B2439B28AF64736F PUSH13 0x634300060C0033000000000000 ",
          "sourceMap": "144:3519:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:156;;;;;;;;;;;;;;;;-1:-1:-1;2345:156:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;379:33;;;:::i;:::-;;;;;;;;;;;;;;;;2665:310;;;;;;;;;;;;;;;;-1:-1:-1;2665:310:0;;;;;;;;;;;;;;;;;;:::i;707:117::-;;;:::i;328:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;555:40;;;:::i;419:50::-;;;;;;;;;;;;;;;;-1:-1:-1;419:50:0;;;;:::i;831:47::-;;;;;;;;;;;;;;;;-1:-1:-1;831:47:0;;;;:::i;274:::-;;;:::i;2509:148::-;;;;;;;;;;;;;;;;-1:-1:-1;2509:148:0;;;;;;;;;:::i;2983:677::-;;;;;;;;;;;;;;;;-1:-1:-1;2983:677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;476:70;;;;;;;;;;;;;;;;-1:-1:-1;476:70:0;;;;;;;;;;;:::i;220:47::-;;;;;;;;;;;;;;;;;;;:::o;2345:156::-;2418:4;2435:36;2444:10;2456:7;2465:5;2435:8;:36::i;:::-;-1:-1:-1;2489:4:0;2345:156;;;;;:::o;379:33::-;;;;:::o;2665:310::-;2773:15;;;2752:4;2773:15;;;:9;:15;;;;;;;;2789:10;2773:27;;;;;;;;2809:2;2773:39;2769:140;;2859:15;;;;;;;:9;:15;;;;;;;;2875:10;2859:27;;;;;;;;:38;;2891:5;2859:31;:38::i;:::-;2829:15;;;;;;;:9;:15;;;;;;;;2845:10;2829:27;;;;;;;:68;2769:140;2919:26;2929:4;2935:2;2939:5;2919:9;:26::i;:::-;-1:-1:-1;2963:4:0;2665:310;;;;;:::o;707:117::-;758:66;707:117;:::o;328:44::-;370:2;328:44;:::o;555:40::-;;;;:::o;419:50::-;;;;;;;;;;;;;:::o;831:47::-;;;;;;;;;;;;;:::o;274:::-;;;;;;;;;;;;;;;;;;;:::o;2509:148::-;2578:4;2595:32;2605:10;2617:2;2621:5;2595:9;:32::i;2983:677::-;3138:15;3126:8;:27;;3118:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3289:16;;3385:13;;;;3184:14;3385:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3334:77;;758:66;3334:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3324:88;;;;;;3225:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:237;;;;;;;;;3476:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3184:14;;3385:15;3476:26;;;;;-1:-1:-1;3476:26:0;;;;;;;;;;3385:15;3476:26;;;;;;;;;;;;;;;-1:-1:-1;;3476:26:0;;;;;;-1:-1:-1;;3521:30:0;;;;;;;:59;;;3575:5;3555:25;;:16;:25;;;3521:59;3513:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3621:31;3630:5;3637:7;3646:5;3621:8;:31::i;:::-;2983:677;;;;;;;;;:::o;476:70::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1939:169::-;2020:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2069:31;;;;;;;;;;;;;;;;;1939:169;;;:::o;333:129:17:-;417:5;;;412:16;;;;404:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2116:221:0;2211:15;;;;;;;:9;:15;;;;;;:26;;2231:5;2211:19;:26::i;:::-;2193:15;;;;;;;;:9;:15;;;;;;:44;;;;2264:13;;;;;;;:24;;2282:5;2264:17;:24::i;:::-;2248:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2304:25;;;;;;;2248:13;;2304:25;;;;;;;;;;;;;2116:221;;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FeSwapERC20.sol\":\"FeSwapERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeSwapERC20.sol\":{\"keccak256\":\"0xbf63cdbef80c105090a8ccfcf292e2932bd6b22ca661dc4fc9b9de855c327f02\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://50cf9770bc6279400f3eb0b27a20fad862be24af16f13efd9515f423557eefdc\",\"dweb:/ipfs/QmZz7dA3QVsVykNnt3kMyNvnnqybftPktbVGAsPf34bY8w\"]},\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xf04a5109c9205c67202d408fdf6ce80ec28fcd93702bdba158d88aae5a6573ad\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ee35c811f41747d96f6946388815e9bf4d6c72dd3ddec7f1de3815979f3f415\",\"dweb:/ipfs/QmZFQ9oBd3DyZbzNf7eTesDxjNxyzpyPcxSC8w9RVRpNPM\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355610a8a806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea2646970667358221220122d17147d05021c5588eab24b113923e49161a1605c571b8f2237b2439b28af64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355610a8a806100ed6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea2646970667358221220122d17147d05021c5588eab24b113923e49161a1605c571b8f2237b2439b28af64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103c133848461082c565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361089b565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461090d565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461090d565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b61080489898961082c565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604090205461093d908261089b565b73ffffffffffffffffffffffffffffffffffffffff808516600090815260016020526040808220939093559084168152205461097990826109e2565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfea2646970667358221220122d17147d05021c5588eab24b113923e49161a1605c571b8f2237b2439b28af64736f6c634300060c0033",
      "srcmap": "144:3519:0:-:0;;;1045:460;;;;;;;;;-1:-1:-1;1367:4:0;;;;;;;;;;;-1:-1:-1;;;1367:4:0;;;;;1402:10;;;;;;;;;;-1:-1:-1;;;1402:10:0;;;;1208:278;;1237:95;1208:278;;;;1351:22;1208:278;;;;1392:21;1208:278;;;;1135:9;1208:278;;;;1466:4;1208:278;;;;;;;;;;;;;;;;;;;;;;;;;1184:313;;;;;1165:16;:332;144:3519;;;;;;",
      "srcmap-runtime": "144:3519:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:47;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:156;;;;;;;;;;;;;;;;-1:-1:-1;2345:156:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;379:33;;;:::i;:::-;;;;;;;;;;;;;;;;2665:310;;;;;;;;;;;;;;;;-1:-1:-1;2665:310:0;;;;;;;;;;;;;;;;;;:::i;707:117::-;;;:::i;328:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;555:40;;;:::i;419:50::-;;;;;;;;;;;;;;;;-1:-1:-1;419:50:0;;;;:::i;831:47::-;;;;;;;;;;;;;;;;-1:-1:-1;831:47:0;;;;:::i;274:::-;;;:::i;2509:148::-;;;;;;;;;;;;;;;;-1:-1:-1;2509:148:0;;;;;;;;;:::i;2983:677::-;;;;;;;;;;;;;;;;-1:-1:-1;2983:677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;476:70;;;;;;;;;;;;;;;;-1:-1:-1;476:70:0;;;;;;;;;;;:::i;220:47::-;;;;;;;;;;;;;;;;;;;:::o;2345:156::-;2418:4;2435:36;2444:10;2456:7;2465:5;2435:8;:36::i;:::-;-1:-1:-1;2489:4:0;2345:156;;;;;:::o;379:33::-;;;;:::o;2665:310::-;2773:15;;;2752:4;2773:15;;;:9;:15;;;;;;;;2789:10;2773:27;;;;;;;;2809:2;2773:39;2769:140;;2859:15;;;;;;;:9;:15;;;;;;;;2875:10;2859:27;;;;;;;;:38;;2891:5;2859:31;:38::i;:::-;2829:15;;;;;;;:9;:15;;;;;;;;2845:10;2829:27;;;;;;;:68;2769:140;2919:26;2929:4;2935:2;2939:5;2919:9;:26::i;:::-;-1:-1:-1;2963:4:0;2665:310;;;;;:::o;707:117::-;758:66;707:117;:::o;328:44::-;370:2;328:44;:::o;555:40::-;;;;:::o;419:50::-;;;;;;;;;;;;;:::o;831:47::-;;;;;;;;;;;;;:::o;274:::-;;;;;;;;;;;;;;;;;;;:::o;2509:148::-;2578:4;2595:32;2605:10;2617:2;2621:5;2595:9;:32::i;2983:677::-;3138:15;3126:8;:27;;3118:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3289:16;;3385:13;;;;3184:14;3385:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3334:77;;758:66;3334:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3324:88;;;;;;3225:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:237;;;;;;;;;3476:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3184:14;;3385:15;3476:26;;;;;-1:-1:-1;3476:26:0;;;;;;;;;;3385:15;3476:26;;;;;;;;;;;;;;;-1:-1:-1;;3476:26:0;;;;;;-1:-1:-1;;3521:30:0;;;;;;;:59;;;3575:5;3555:25;;:16;:25;;;3521:59;3513:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3621:31;3630:5;3637:7;3646:5;3621:8;:31::i;:::-;2983:677;;;;;;;;;:::o;476:70::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;1939:169::-;2020:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2069:31;;;;;;;;;;;;;;;;;1939:169;;;:::o;333:129:17:-;417:5;;;412:16;;;;404:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2116:221:0;2211:15;;;;;;;:9;:15;;;;;;:26;;2231:5;2211:19;:26::i;:::-;2193:15;;;;;;;;:9;:15;;;;;;:44;;;;2264:13;;;;;;;:24;;2282:5;2264:17;:24::i;:::-;2248:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2304:25;;;;;;;2248:13;;2304:25;;;;;;;;;;;;;2116:221;;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/FeSwapFactory.sol:FeSwapFactory": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_factoryAdmin",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pairAAB",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pairABB",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "allPairsLength",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "pairAAB",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "pairABB",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "oldOwner",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "newOwner",
              "type": "address"
            }
          ],
          "name": "PairOwnerChanged",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "RATE_CAP_TRIGGER_ARBITRAGE",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "RATE_PROFIT_SHARE",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "RATE_TRIGGER_FACTORY",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint64",
              "name": "newTriggerRate",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "newRateCap",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "newProfitShareRate",
              "type": "uint64"
            }
          ],
          "name": "configFactory",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "pairOwner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rateTrigger",
              "type": "uint256"
            }
          ],
          "name": "createUpdatePair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pairAAB",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "pairABB",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factoryAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getFeeInfo",
          "outputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "_rateProfitShare",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_tokenB",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_pairOwner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_routerFeSwap",
              "type": "address"
            }
          ],
          "name": "managePair",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "rateCapArbitrage",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "rateProfitShare",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "rateTriggerFactory",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "routerFeSwap",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_factoryAdmin",
              "type": "address"
            }
          ],
          "name": "setFactoryAdmin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_feeTo",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_routerFeSwap",
              "type": "address"
            }
          ],
          "name": "setRouterFeSwap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b5060405161471b38038061471b8339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0390921691909117815560028054600160a01b600160e01b031916600560a11b1790556003805460326001600160401b031990911617600160401b600160801b031916680b00000000000000001790556146719081906100aa90396000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c8063687d5b7f116100cd578063e6a4390511610081578063f46901ed11610066578063f46901ed146103d0578063f71e3a5414610403578063fd5dd6d41461040b57610150565b8063e6a439051461038d578063f3767beb146103c857610150565b8063d5322488116100b2578063d532248814610344578063d75966771461034c578063d886d63d1461038557610150565b8063687d5b7f146102aa578063883d2730146102b257610150565b806317d8ec7f1161012457806351a056d11161010957806351a056d11461023d57806353a081d414610245578063574f2ba31461029057610150565b806317d8ec7f146102185780631e3dd18b1461022057610150565b806202eab714610155578063017e7e581461018d57806305dfd86f146101be57806316fc2115146101f3575b600080fd5b61015d61043e565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091528051918290030190f35b610195610477565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f1600480360360208110156101d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610493565b005b6101fb610560565b6040805167ffffffffffffffff9092168252519081900360200190f35b61019561057c565b6101956004803603602081101561023657600080fd5b5035610598565b6101fb6105cc565b6101f16004803603608081101561025b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160600135166105d1565b61029861085e565b60408051918252519081900360200190f35b610195610864565b6102fb600480360360808110156102c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610880565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6101fb6112d5565b6101f16004803603606081101561036257600080fd5b5067ffffffffffffffff81358116916020810135821691604090910135166112fd565b6101fb611435565b610195600480360360408110156103a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611445565b6101fb611478565b6101f1600480360360208110156103e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661147d565b6101fb61154a565b6101f16004803603602081101561042157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661154f565b60015460035473ffffffffffffffffffffffffffffffffffffffff909116916801000000000000000090910467ffffffffffffffff1690565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461051957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035468010000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106105a557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b603281565b60005473ffffffffffffffffffffffffffffffffffffffff16331461065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808516600081815260046020818152604080842089871685528252808420549282528084209484529390529190205490821691168161070c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4665537761703a204e4f20544f4b454e20504149520000000000000000000000604482015290519081900360640190fd5b604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301528681166044830152858116606483015260006084830181905292519085169263f7013ef69260a4808201939182900301818387803b15801561079957600080fd5b505af11580156107ad573d6000803e3d6000fd5b5050604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528a81166024830152888116604483015287811660648301526000608483018190529251908616945063f7013ef6935060a4808301939282900301818387803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b50505050505050505050565b60055490565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000808473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561091e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4665537761703a204944454e544943414c5f4144445245535345530000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff861615801590610958575073ffffffffffffffffffffffffffffffffffffffff851615155b801561097b575060025473ffffffffffffffffffffffffffffffffffffffff1615155b6109e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a205a45524f5f41444452455353000000000000000000000000604482015290519081900360640190fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610a23575060025473ffffffffffffffffffffffffffffffffffffffff1633145b610a8e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b60035467ffffffffffffffff16831115610b0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a2047415020544f4f204d4f5245000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808716600090815260046020908152604080832089851684529091529020541691508115610ec7575073ffffffffffffffffffffffffffffffffffffffff80851660009081526004602081815260408084208a8616855282528084205481517f2ec2fe3d000000000000000000000000000000000000000000000000000000008152915190861695871693632ec2fe3d938382019390929190829003018186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff80821690861614610db5578273ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8f58980d5959b1ea236fdaf1fee2ac14b0a3b29f692eff32a5672de85d5724988388604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a35b8315610ec157600260149054906101000a900467ffffffffffffffff1660040267ffffffffffffffff1684600602016127100193508273ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ea857600080fd5b505af1158015610ebc573d6000803e3d6000fd5b505050505b506112cc565b606060405180602001610ed99061161c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408181527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b811b82166020858101829052918c901b90921660348501819052835160288187030181526048860185528051908301206068860191909152607c85019290925282516070818603018152609090940190925282519282019290922083519394509192839185016000f59450808351602085016000f5935085610fd45760025474010000000000000000000000000000000000000000900467ffffffffffffffff1695505b600254604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004808401919091528c821660248401528b8216604484015281851660648401527401000000000000000000000000000000000000000090940467ffffffffffffffff908116909402909316600699909902989098016127100160848901819052905190979187169163f7013ef69160a480830192600092919082900301818387803b1580156110a557600080fd5b505af11580156110b9573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808b1660008181526004602081815260408084208f871680865292528084208054878e167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600580546001810182559087527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909116909117905560025481517ff7013ef60000000000000000000000000000000000000000000000000000000081529384019290925260248301949094528c8516604483015284166064820152608481018b90529151928816935063f7013ef69260a48084019382900301818387803b1580156111cc57600080fd5b505af11580156111e0573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808a1660008181526004602090815260408083208f86168085529083528184208054878d167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216811790925560058054600181018255968190527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090960180549091168217905593548251968d168752928601939093528481019190915251919350917fa2d65e38bd2bf6cb3385fb3f58bfe90caadcea402ec5d5808da6ea171f11bba1919081900360600190a35050505b94509492505050565b60025474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461138357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff95861602179055600380547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016928416929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000009190931602919091179055565b60035467ffffffffffffffff1681565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b600a81565b60005473ffffffffffffffffffffffffffffffffffffffff16331461150357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600b81565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6130128061162a8339019056fe6080604052605a600e5534801561001557600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612f0e806101046000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033a2646970667358221220c3df6bfe5ed511fb76741eecbc492c75da690a19c504dfdede9058f379a9851664736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x471B CODESIZE SUB DUP1 PUSH2 0x471B DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x0 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR DUP2 SSTORE PUSH1 0x2 DUP1 SLOAD PUSH1 0x1 PUSH1 0xA0 SHL PUSH1 0x1 PUSH1 0xE0 SHL SUB NOT AND PUSH1 0x5 PUSH1 0xA1 SHL OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH1 0x32 PUSH1 0x1 PUSH1 0x1 PUSH1 0x40 SHL SUB NOT SWAP1 SWAP2 AND OR PUSH1 0x1 PUSH1 0x40 SHL PUSH1 0x1 PUSH1 0x80 SHL SUB NOT AND PUSH9 0xB0000000000000000 OR SWAP1 SSTORE PUSH2 0x4671 SWAP1 DUP2 SWAP1 PUSH2 0xAA SWAP1 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x150 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x687D5B7F GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xE6A43905 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF46901ED GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF46901ED EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0xF71E3A54 EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0xFD5DD6D4 EQ PUSH2 0x40B JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0xE6A43905 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0xF3767BEB EQ PUSH2 0x3C8 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0xD5322488 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xD5322488 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xD7596677 EQ PUSH2 0x34C JUMPI DUP1 PUSH4 0xD886D63D EQ PUSH2 0x385 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0x687D5B7F EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x883D2730 EQ PUSH2 0x2B2 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0x17D8EC7F GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x51A056D1 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x51A056D1 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x53A081D4 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x574F2BA3 EQ PUSH2 0x290 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0x17D8EC7F EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x1E3DD18B EQ PUSH2 0x220 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH3 0x2EAB7 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x17E7E58 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x5DFD86F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x16FC2115 EQ PUSH2 0x1F3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15D PUSH2 0x43E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x195 PUSH2 0x477 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x493 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1FB PUSH2 0x560 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x195 PUSH2 0x57C JUMP JUMPDEST PUSH2 0x195 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x598 JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x5CC JUMP JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x5D1 JUMP JUMPDEST PUSH2 0x298 PUSH2 0x85E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x195 PUSH2 0x864 JUMP JUMPDEST PUSH2 0x2FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x880 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH2 0x12D5 JUMP JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x12FD JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x1435 JUMP JUMPDEST PUSH2 0x195 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x1478 JUMP JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147D JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x154A JUMP JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x154F JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x519 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x5A5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x32 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x657 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 SLOAD SWAP3 DUP3 MSTORE DUP1 DUP5 KECCAK256 SWAP5 DUP5 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 SLOAD SWAP1 DUP3 AND SWAP2 AND DUP2 PUSH2 0x70C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204E4F20544F4B454E20504149520000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xF7013EF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 MLOAD SWAP1 DUP6 AND SWAP3 PUSH4 0xF7013EF6 SWAP3 PUSH1 0xA4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xF7013EF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 MLOAD SWAP1 DUP7 AND SWAP5 POP PUSH4 0xF7013EF6 SWAP4 POP PUSH1 0xA4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x83E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x852 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x91E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204944454E544943414C5F4144445245535345530000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x958 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x97B JUMPI POP PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH2 0x9E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A205A45524F5F41444452455353000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ DUP1 PUSH2 0xA23 JUMPI POP PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ JUMPDEST PUSH2 0xA8E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 GT ISZERO PUSH2 0xB09 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A2047415020544F4F204D4F5245000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP2 POP DUP2 ISZERO PUSH2 0xEC7 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP11 DUP7 AND DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 SLOAD DUP2 MLOAD PUSH32 0x2EC2FE3D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 MLOAD SWAP1 DUP7 AND SWAP6 DUP8 AND SWAP4 PUSH4 0x2EC2FE3D SWAP4 DUP4 DUP3 ADD SWAP4 SWAP1 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP1 DUP7 AND EQ PUSH2 0xDB5 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x13AF4035 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC96 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x13AF4035 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8F58980D5959B1EA236FDAF1FEE2AC14B0A3B29F692EFF32A5672DE85D572498 DUP4 DUP9 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST DUP4 ISZERO PUSH2 0xEC1 JUMPI PUSH1 0x2 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x4 MUL PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x6 MUL ADD PUSH2 0x2710 ADD SWAP4 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA1F497D6 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE51 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA1F497D6 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH2 0x12CC JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0xED9 SWAP1 PUSH2 0x161C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP12 DUP2 SHL DUP3 AND PUSH1 0x20 DUP6 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 DUP13 SWAP1 SHL SWAP1 SWAP3 AND PUSH1 0x34 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MLOAD PUSH1 0x28 DUP2 DUP8 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP7 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH1 0x68 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 MLOAD PUSH1 0x70 DUP2 DUP7 SUB ADD DUP2 MSTORE PUSH1 0x90 SWAP1 SWAP5 ADD SWAP1 SWAP3 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP4 MLOAD SWAP4 SWAP5 POP SWAP2 SWAP3 DUP4 SWAP2 DUP6 ADD PUSH1 0x0 CREATE2 SWAP5 POP DUP1 DUP4 MLOAD PUSH1 0x20 DUP6 ADD PUSH1 0x0 CREATE2 SWAP4 POP DUP6 PUSH2 0xFD4 JUMPI PUSH1 0x2 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP6 POP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF7013EF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 DUP2 AND PUSH1 0x4 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP13 DUP3 AND PUSH1 0x24 DUP5 ADD MSTORE DUP12 DUP3 AND PUSH1 0x44 DUP5 ADD MSTORE DUP2 DUP6 AND PUSH1 0x64 DUP5 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP5 DIV PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP5 MUL SWAP1 SWAP4 AND PUSH1 0x6 SWAP10 SWAP1 SWAP10 MUL SWAP9 SWAP1 SWAP9 ADD PUSH2 0x2710 ADD PUSH1 0x84 DUP10 ADD DUP2 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP8 SWAP2 DUP8 AND SWAP2 PUSH4 0xF7013EF6 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP16 DUP8 AND DUP1 DUP7 MSTORE SWAP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD DUP8 DUP15 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP8 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x2 SLOAD DUP2 MLOAD PUSH32 0xF7013EF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP4 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP13 DUP6 AND PUSH1 0x44 DUP4 ADD MSTORE DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP12 SWAP1 MSTORE SWAP2 MLOAD SWAP3 DUP9 AND SWAP4 POP PUSH4 0xF7013EF6 SWAP3 PUSH1 0xA4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP16 DUP7 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 DUP14 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP7 DUP2 SWAP1 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP7 ADD DUP1 SLOAD SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE SWAP4 SLOAD DUP3 MLOAD SWAP7 DUP14 AND DUP8 MSTORE SWAP3 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP5 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 SWAP4 POP SWAP2 PUSH32 0xA2D65E38BD2BF6CB3385FB3F58BFE90CAADCEA402EC5D5808DA6EA171F11BBA1 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1383 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH8 0xFFFFFFFFFFFFFFFF SWAP6 DUP7 AND MUL OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP2 SWAP1 SWAP4 AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1503 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xB DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x15D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3012 DUP1 PUSH2 0x162A DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x5A PUSH1 0xE SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x46655377617 PUSH1 0xD4 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x84AAF7FDA2A4DCB5E79FA4719E805D2B354FAFD29C5E5E9F8F62249697C6FBCD DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2F0E DUP1 PUSH2 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DAF390B GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x691 JUMPI DUP1 PUSH4 0xF7013EF6 EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x71F JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0xD0202D3B EQ PUSH2 0x62B JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x89AFCB44 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0xA1F497D6 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AF JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6DAF390B EQ PUSH2 0x4C8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x50B JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x495 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x2EC2FE3D EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x45F JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x9F5D055 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x9F5D055 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x1C6DA724 EQ PUSH2 0x351 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2AD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x764 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26F PUSH2 0x79D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x80D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x813 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x302 PUSH2 0x8E0 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF31 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x100A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x467 PUSH2 0x104A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x302 PUSH2 0x1055 JUMP JUMPDEST PUSH2 0x302 PUSH2 0x105B JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1061 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1403 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x141F JUMP JUMPDEST PUSH2 0x302 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1437 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1449 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH2 0x18D5 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x190E JUMP JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1999 JUMP JUMPDEST PUSH2 0x302 PUSH2 0x19A6 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19AC JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1B99 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1BD1 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1E9D JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x1EBA JUMP JUMPDEST PUSH2 0x727 PUSH2 0x207C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4665537761700000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xD SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP4 PUSH15 0x10000000000000000000000000000 DUP5 DIV SWAP1 SWAP2 AND SWAP3 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x803 CALLER DUP5 DUP5 PUSH2 0x226F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x899 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x957 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE DUP4 PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E92 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND DUP1 DUP7 LT PUSH2 0xA49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E53554646494349454E545F4C49515549444954590000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0xAAE JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0xB19 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F544F0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB24 DUP2 DUP11 DUP13 PUSH2 0x22DE JUMP JUMPDEST DUP7 ISZERO PUSH2 0xBE8 JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x387D768A CALLER DUP13 DUP12 DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP4 GT PUSH2 0xD41 JUMPI PUSH1 0x0 PUSH2 0xD55 JUMP JUMPDEST DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xD79 JUMPI PUSH1 0x0 PUSH2 0xD8F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xDA0 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xDF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E71 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE17 PUSH2 0xE05 DUP4 PUSH1 0x3 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0xE11 DUP7 PUSH2 0x3E8 PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 PUSH2 0x3E8 PUSH2 0xE3C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP1 DUP11 AND PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0xE4C DUP7 DUP4 PUSH2 0x24EB JUMP JUMPDEST LT ISZERO PUSH2 0xEB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204B0000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEC5 DUP6 DUP6 DUP10 DUP10 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 CALLER SWAP2 PUSH32 0xFCFA612587D1091CC6D8CE39878A7E6E8742C856865FC9D64DB3E1A2F1AB52EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xFF5 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xFC3 SWAP1 DUP4 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x1000 DUP5 DUP5 DUP5 PUSH2 0x2899 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x10D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x0 DUP1 PUSH2 0x10E4 PUSH2 0x79D JUMP JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x115F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1216 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x122C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x124C DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x126A DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1280 PUSH2 0x127B DUP5 DUP5 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0x296E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x128E DUP9 DUP9 PUSH2 0x29C0 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x12B9 JUMPI PUSH2 0x12A5 DUP4 PUSH2 0x3E8 PUSH2 0x2571 JUMP JUMPDEST SWAP10 POP PUSH2 0x12B4 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2BFF JUMP JUMPDEST PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1307 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x12D7 DUP8 DUP5 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x12DE JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x12FA DUP8 DUP6 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x1301 JUMPI INVALID JUMPDEST DIV PUSH2 0x2CA3 JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH1 0x0 DUP11 GT PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E4C PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP12 DUP12 PUSH2 0x2BFF JUMP JUMPDEST PUSH2 0x1379 DUP8 DUP8 DUP12 DUP12 PUSH2 0x25E3 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x13B5 JUMPI PUSH1 0x9 SLOAD PUSH2 0x13B1 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x24EB JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP SWAP6 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x14BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x0 DUP1 PUSH2 0x14CD PUSH2 0x79D JUMP JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1564 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1602 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1637 DUP9 DUP9 PUSH2 0x29C0 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1648 DUP5 DUP8 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x164F JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x165D DUP5 DUP7 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x1664 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x1677 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x16CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2EB4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x16D6 ADDRESS DUP5 PUSH2 0x2CBB JUMP JUMPDEST PUSH2 0x16E1 DUP8 DUP14 DUP14 PUSH2 0x22DE JUMP JUMPDEST PUSH2 0x16EC DUP7 DUP14 DUP13 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x176C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1782 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1808 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x182E DUP6 DUP6 DUP12 DUP12 PUSH2 0x25E3 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x186A JUMPI PUSH1 0x9 SLOAD PUSH2 0x1866 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x24EB JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x5A PUSH1 0xE DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4645535000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1994 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x803 CALLER DUP5 DUP5 PUSH2 0x2899 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x1A1D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x1AF3 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x1AEE SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x2571 JUMP JUMPDEST PUSH2 0x22DE JUMP JUMPDEST PUSH2 0x1B8F DUP2 DUP5 PUSH2 0x1AEE PUSH1 0x9 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1C40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20455850495245440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1E1C JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1E87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F5349474E415455524500000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1E92 DUP10 DUP10 DUP10 PUSH2 0x226F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1F40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x8 DUP1 SLOAD DUP8 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1FAE JUMPI PUSH1 0xD DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2049 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x205D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2073 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x20F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP5 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND SWAP3 PUSH2 0x2266 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2247 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 DUP5 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0x5A PUSH1 0xE SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23E4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x23A7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2446 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x244B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2479 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2479 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x24E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A205452414E534645525F4641494C4544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2506 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2503 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x260F JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x267A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204F564552464C4F5700000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x26CA JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x26E5 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x278F JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x2722 DUP6 PUSH2 0x26FE DUP7 PUSH2 0x2D74 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x2D98 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2762 DUP5 PUSH2 0x26FE DUP8 PUSH2 0x2D74 JUMP JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x28C9 SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2905 SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x29B1 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29AB JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x299A JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x29A3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2983 JUMP JUMPDEST POP PUSH2 0x29BB JUMP JUMPDEST DUP2 ISZERO PUSH2 0x29BB JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2EAB7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x2A9E JUMPI POP PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH1 0xC SLOAD SWAP1 SWAP4 POP DUP4 ISZERO PUSH2 0x2BEA JUMPI DUP1 ISZERO PUSH2 0x2BE5 JUMPI PUSH1 0x0 PUSH2 0x2AD2 PUSH2 0x127B PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND SWAP1 DUP10 AND PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2ADF DUP4 PUSH2 0x296E JUMP JUMPDEST SWAP1 POP PUSH2 0x2AEC DUP2 PUSH1 0x14 PUSH2 0x2DD9 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x2BE2 JUMPI PUSH1 0x0 PUSH2 0x2B10 PUSH1 0x6 PUSH2 0xE3C PUSH2 0x2B07 DUP7 DUP7 PUSH2 0x2571 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B28 DUP4 PUSH2 0x2B22 DUP7 DUP10 PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x2DD9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B37 DUP3 PUSH1 0xA PUSH2 0x24EB JUMP JUMPDEST DUP4 DUP2 PUSH2 0x2B3F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x2B69 JUMPI POP PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2B91 JUMPI PUSH1 0x6 SLOAD PUSH2 0x2B91 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x2BFF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B9E DUP4 PUSH1 0xF PUSH2 0x24EB JUMP JUMPDEST DUP5 DUP2 PUSH2 0x2BA6 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x2BCE JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BDD JUMPI PUSH2 0x2BDD DUP10 DUP3 PUSH2 0x2BFF JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x2BF6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2BF6 JUMPI PUSH1 0x0 PUSH1 0xC SSTORE JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2C0C SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2C3E SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x2CB2 JUMPI DUP2 PUSH2 0x2CB4 JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2CEB SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2D1F SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x2DD1 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 BYTE MULMOD MOD RETURN DUP14 OR 0xC1 0xD9 0xE8 0xBC 0x2F PUSH20 0x99930D121217FA2ACEE35DB092A20C4D49AF1964 PUSH20 0x6F6C634300060C0033A2646970667358221220C3 0xDF PUSH12 0xFE5ED511FB76741EECBC492C PUSH22 0xDA690A19C504DFDEDE9058F379A9851664736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "138:5691:1:-:0;;;1205:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1205:259:1;1258:12;:35;;-1:-1:-1;;;;;;1258:35:1;-1:-1:-1;;;;;1258:35:1;;;;;;;;;1304:18;:42;;-1:-1:-1;;;;;;;;1304:42:1;-1:-1:-1;;;1304:42:1;;;1357:16;:48;;336:2;-1:-1:-1;;;;;;1357:48:1;;;;-1:-1:-1;;;;;;;;1416:39:1;;;;;138:5691;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106101505760003560e01c8063687d5b7f116100cd578063e6a4390511610081578063f46901ed11610066578063f46901ed146103d0578063f71e3a5414610403578063fd5dd6d41461040b57610150565b8063e6a439051461038d578063f3767beb146103c857610150565b8063d5322488116100b2578063d532248814610344578063d75966771461034c578063d886d63d1461038557610150565b8063687d5b7f146102aa578063883d2730146102b257610150565b806317d8ec7f1161012457806351a056d11161010957806351a056d11461023d57806353a081d414610245578063574f2ba31461029057610150565b806317d8ec7f146102185780631e3dd18b1461022057610150565b806202eab714610155578063017e7e581461018d57806305dfd86f146101be57806316fc2115146101f3575b600080fd5b61015d61043e565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091528051918290030190f35b610195610477565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f1600480360360208110156101d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610493565b005b6101fb610560565b6040805167ffffffffffffffff9092168252519081900360200190f35b61019561057c565b6101956004803603602081101561023657600080fd5b5035610598565b6101fb6105cc565b6101f16004803603608081101561025b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160600135166105d1565b61029861085e565b60408051918252519081900360200190f35b610195610864565b6102fb600480360360808110156102c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610880565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6101fb6112d5565b6101f16004803603606081101561036257600080fd5b5067ffffffffffffffff81358116916020810135821691604090910135166112fd565b6101fb611435565b610195600480360360408110156103a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611445565b6101fb611478565b6101f1600480360360208110156103e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661147d565b6101fb61154a565b6101f16004803603602081101561042157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661154f565b60015460035473ffffffffffffffffffffffffffffffffffffffff909116916801000000000000000090910467ffffffffffffffff1690565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461051957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035468010000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106105a557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b603281565b60005473ffffffffffffffffffffffffffffffffffffffff16331461065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808516600081815260046020818152604080842089871685528252808420549282528084209484529390529190205490821691168161070c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4665537761703a204e4f20544f4b454e20504149520000000000000000000000604482015290519081900360640190fd5b604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301528681166044830152858116606483015260006084830181905292519085169263f7013ef69260a4808201939182900301818387803b15801561079957600080fd5b505af11580156107ad573d6000803e3d6000fd5b5050604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528a81166024830152888116604483015287811660648301526000608483018190529251908616945063f7013ef6935060a4808301939282900301818387803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b50505050505050505050565b60055490565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000808473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561091e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4665537761703a204944454e544943414c5f4144445245535345530000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff861615801590610958575073ffffffffffffffffffffffffffffffffffffffff851615155b801561097b575060025473ffffffffffffffffffffffffffffffffffffffff1615155b6109e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a205a45524f5f41444452455353000000000000000000000000604482015290519081900360640190fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610a23575060025473ffffffffffffffffffffffffffffffffffffffff1633145b610a8e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b60035467ffffffffffffffff16831115610b0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a2047415020544f4f204d4f5245000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808716600090815260046020908152604080832089851684529091529020541691508115610ec7575073ffffffffffffffffffffffffffffffffffffffff80851660009081526004602081815260408084208a8616855282528084205481517f2ec2fe3d000000000000000000000000000000000000000000000000000000008152915190861695871693632ec2fe3d938382019390929190829003018186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff80821690861614610db5578273ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8f58980d5959b1ea236fdaf1fee2ac14b0a3b29f692eff32a5672de85d5724988388604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a35b8315610ec157600260149054906101000a900467ffffffffffffffff1660040267ffffffffffffffff1684600602016127100193508273ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ea857600080fd5b505af1158015610ebc573d6000803e3d6000fd5b505050505b506112cc565b606060405180602001610ed99061161c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408181527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b811b82166020858101829052918c901b90921660348501819052835160288187030181526048860185528051908301206068860191909152607c85019290925282516070818603018152609090940190925282519282019290922083519394509192839185016000f59450808351602085016000f5935085610fd45760025474010000000000000000000000000000000000000000900467ffffffffffffffff1695505b600254604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004808401919091528c821660248401528b8216604484015281851660648401527401000000000000000000000000000000000000000090940467ffffffffffffffff908116909402909316600699909902989098016127100160848901819052905190979187169163f7013ef69160a480830192600092919082900301818387803b1580156110a557600080fd5b505af11580156110b9573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808b1660008181526004602081815260408084208f871680865292528084208054878e167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600580546001810182559087527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909116909117905560025481517ff7013ef60000000000000000000000000000000000000000000000000000000081529384019290925260248301949094528c8516604483015284166064820152608481018b90529151928816935063f7013ef69260a48084019382900301818387803b1580156111cc57600080fd5b505af11580156111e0573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808a1660008181526004602090815260408083208f86168085529083528184208054878d167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216811790925560058054600181018255968190527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090960180549091168217905593548251968d168752928601939093528481019190915251919350917fa2d65e38bd2bf6cb3385fb3f58bfe90caadcea402ec5d5808da6ea171f11bba1919081900360600190a35050505b94509492505050565b60025474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461138357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff95861602179055600380547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016928416929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000009190931602919091179055565b60035467ffffffffffffffff1681565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b600a81565b60005473ffffffffffffffffffffffffffffffffffffffff16331461150357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600b81565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6130128061162a8339019056fe6080604052605a600e5534801561001557600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612f0e806101046000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033a2646970667358221220c3df6bfe5ed511fb76741eecbc492c75da690a19c504dfdede9058f379a9851664736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x150 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x687D5B7F GT PUSH2 0xCD JUMPI DUP1 PUSH4 0xE6A43905 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xF46901ED GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xF46901ED EQ PUSH2 0x3D0 JUMPI DUP1 PUSH4 0xF71E3A54 EQ PUSH2 0x403 JUMPI DUP1 PUSH4 0xFD5DD6D4 EQ PUSH2 0x40B JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0xE6A43905 EQ PUSH2 0x38D JUMPI DUP1 PUSH4 0xF3767BEB EQ PUSH2 0x3C8 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0xD5322488 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xD5322488 EQ PUSH2 0x344 JUMPI DUP1 PUSH4 0xD7596677 EQ PUSH2 0x34C JUMPI DUP1 PUSH4 0xD886D63D EQ PUSH2 0x385 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0x687D5B7F EQ PUSH2 0x2AA JUMPI DUP1 PUSH4 0x883D2730 EQ PUSH2 0x2B2 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0x17D8EC7F GT PUSH2 0x124 JUMPI DUP1 PUSH4 0x51A056D1 GT PUSH2 0x109 JUMPI DUP1 PUSH4 0x51A056D1 EQ PUSH2 0x23D JUMPI DUP1 PUSH4 0x53A081D4 EQ PUSH2 0x245 JUMPI DUP1 PUSH4 0x574F2BA3 EQ PUSH2 0x290 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH4 0x17D8EC7F EQ PUSH2 0x218 JUMPI DUP1 PUSH4 0x1E3DD18B EQ PUSH2 0x220 JUMPI PUSH2 0x150 JUMP JUMPDEST DUP1 PUSH3 0x2EAB7 EQ PUSH2 0x155 JUMPI DUP1 PUSH4 0x17E7E58 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x5DFD86F EQ PUSH2 0x1BE JUMPI DUP1 PUSH4 0x16FC2115 EQ PUSH2 0x1F3 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x15D PUSH2 0x43E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP4 AND DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x195 PUSH2 0x477 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x493 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1FB PUSH2 0x560 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x195 PUSH2 0x57C JUMP JUMPDEST PUSH2 0x195 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x236 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x598 JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x5CC JUMP JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x25B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 ADD CALLDATALOAD AND PUSH2 0x5D1 JUMP JUMPDEST PUSH2 0x298 PUSH2 0x85E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x195 PUSH2 0x864 JUMP JUMPDEST PUSH2 0x2FB PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x80 DUP2 LT ISZERO PUSH2 0x2C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0x60 ADD CALLDATALOAD PUSH2 0x880 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1FB PUSH2 0x12D5 JUMP JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x362 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH8 0xFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 SWAP1 SWAP2 ADD CALLDATALOAD AND PUSH2 0x12FD JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x1435 JUMP JUMPDEST PUSH2 0x195 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x3A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1445 JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x1478 JUMP JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x3E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x147D JUMP JUMPDEST PUSH2 0x1FB PUSH2 0x154A JUMP JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x421 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x154F JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH9 0x10000000000000000 SWAP1 SWAP2 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP1 JUMP JUMPDEST PUSH1 0x1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x519 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH9 0x10000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x5 DUP2 DUP2 SLOAD DUP2 LT PUSH2 0x5A5 JUMPI INVALID JUMPDEST PUSH1 0x0 SWAP2 DUP3 MSTORE PUSH1 0x20 SWAP1 SWAP2 KECCAK256 ADD SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 POP DUP2 JUMP JUMPDEST PUSH1 0x32 DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x657 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP10 DUP8 AND DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 SLOAD SWAP3 DUP3 MSTORE DUP1 DUP5 KECCAK256 SWAP5 DUP5 MSTORE SWAP4 SWAP1 MSTORE SWAP2 SWAP1 KECCAK256 SLOAD SWAP1 DUP3 AND SWAP2 AND DUP2 PUSH2 0x70C JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204E4F20544F4B454E20504149520000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xF7013EF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP7 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP6 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 MLOAD SWAP1 DUP6 AND SWAP3 PUSH4 0xF7013EF6 SWAP3 PUSH1 0xA4 DUP1 DUP3 ADD SWAP4 SWAP2 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x799 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7AD JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 DUP1 MLOAD PUSH32 0xF7013EF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE DUP11 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE DUP9 DUP2 AND PUSH1 0x44 DUP4 ADD MSTORE DUP8 DUP2 AND PUSH1 0x64 DUP4 ADD MSTORE PUSH1 0x0 PUSH1 0x84 DUP4 ADD DUP2 SWAP1 MSTORE SWAP3 MLOAD SWAP1 DUP7 AND SWAP5 POP PUSH4 0xF7013EF6 SWAP4 POP PUSH1 0xA4 DUP1 DUP4 ADD SWAP4 SWAP3 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x83E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x852 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x5 SLOAD SWAP1 JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO PUSH2 0x91E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1B PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204944454E544943414C5F4144445245535345530000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x958 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x97B JUMPI POP PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH2 0x9E6 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A205A45524F5F41444452455353000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ DUP1 PUSH2 0xA23 JUMPI POP PUSH1 0x2 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ JUMPDEST PUSH2 0xA8E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP4 GT ISZERO PUSH2 0xB09 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A2047415020544F4F204D4F5245000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP10 DUP6 AND DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD AND SWAP2 POP DUP2 ISZERO PUSH2 0xEC7 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP11 DUP7 AND DUP6 MSTORE DUP3 MSTORE DUP1 DUP5 KECCAK256 SLOAD DUP2 MLOAD PUSH32 0x2EC2FE3D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP2 MLOAD SWAP1 DUP7 AND SWAP6 DUP8 AND SWAP4 PUSH4 0x2EC2FE3D SWAP4 DUP4 DUP3 ADD SWAP4 SWAP1 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xBDF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xBF5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP1 DUP7 AND EQ PUSH2 0xDB5 JUMPI DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x13AF4035 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC82 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xC96 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x13AF4035 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD03 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xD17 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0x8F58980D5959B1EA236FDAF1FEE2AC14B0A3B29F692EFF32A5672DE85D572498 DUP4 DUP9 PUSH1 0x40 MLOAD DUP1 DUP4 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG3 JUMPDEST DUP4 ISZERO PUSH2 0xEC1 JUMPI PUSH1 0x2 PUSH1 0x14 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND PUSH1 0x4 MUL PUSH8 0xFFFFFFFFFFFFFFFF AND DUP5 PUSH1 0x6 MUL ADD PUSH2 0x2710 ADD SWAP4 POP DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA1F497D6 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xE3D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xE51 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA1F497D6 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xEA8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xEBC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST POP PUSH2 0x12CC JUMP JUMPDEST PUSH1 0x60 PUSH1 0x40 MLOAD DUP1 PUSH1 0x20 ADD PUSH2 0xED9 SWAP1 PUSH2 0x161C JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 DUP3 SUB DUP2 ADD DUP4 MSTORE PUSH1 0x1F SWAP1 SWAP2 ADD AND PUSH1 0x40 DUP2 DUP2 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 DUP12 DUP2 SHL DUP3 AND PUSH1 0x20 DUP6 DUP2 ADD DUP3 SWAP1 MSTORE SWAP2 DUP13 SWAP1 SHL SWAP1 SWAP3 AND PUSH1 0x34 DUP6 ADD DUP2 SWAP1 MSTORE DUP4 MLOAD PUSH1 0x28 DUP2 DUP8 SUB ADD DUP2 MSTORE PUSH1 0x48 DUP7 ADD DUP6 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH1 0x68 DUP7 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x7C DUP6 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 MLOAD PUSH1 0x70 DUP2 DUP7 SUB ADD DUP2 MSTORE PUSH1 0x90 SWAP1 SWAP5 ADD SWAP1 SWAP3 MSTORE DUP3 MLOAD SWAP3 DUP3 ADD SWAP3 SWAP1 SWAP3 KECCAK256 DUP4 MLOAD SWAP4 SWAP5 POP SWAP2 SWAP3 DUP4 SWAP2 DUP6 ADD PUSH1 0x0 CREATE2 SWAP5 POP DUP1 DUP4 MLOAD PUSH1 0x20 DUP6 ADD PUSH1 0x0 CREATE2 SWAP4 POP DUP6 PUSH2 0xFD4 JUMPI PUSH1 0x2 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND SWAP6 POP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0xF7013EF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 DUP2 AND PUSH1 0x4 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP13 DUP3 AND PUSH1 0x24 DUP5 ADD MSTORE DUP12 DUP3 AND PUSH1 0x44 DUP5 ADD MSTORE DUP2 DUP6 AND PUSH1 0x64 DUP5 ADD MSTORE PUSH21 0x10000000000000000000000000000000000000000 SWAP1 SWAP5 DIV PUSH8 0xFFFFFFFFFFFFFFFF SWAP1 DUP2 AND SWAP1 SWAP5 MUL SWAP1 SWAP4 AND PUSH1 0x6 SWAP10 SWAP1 SWAP10 MUL SWAP9 SWAP1 SWAP9 ADD PUSH2 0x2710 ADD PUSH1 0x84 DUP10 ADD DUP2 SWAP1 MSTORE SWAP1 MLOAD SWAP1 SWAP8 SWAP2 DUP8 AND SWAP2 PUSH4 0xF7013EF6 SWAP2 PUSH1 0xA4 DUP1 DUP4 ADD SWAP3 PUSH1 0x0 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10A5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x10B9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP12 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 DUP2 DUP2 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 DUP16 DUP8 AND DUP1 DUP7 MSTORE SWAP3 MSTORE DUP1 DUP5 KECCAK256 DUP1 SLOAD DUP8 DUP15 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP1 DUP8 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 ADD DUP1 SLOAD SWAP1 SWAP2 AND SWAP1 SWAP2 OR SWAP1 SSTORE PUSH1 0x2 SLOAD DUP2 MLOAD PUSH32 0xF7013EF600000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP4 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x24 DUP4 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP13 DUP6 AND PUSH1 0x44 DUP4 ADD MSTORE DUP5 AND PUSH1 0x64 DUP3 ADD MSTORE PUSH1 0x84 DUP2 ADD DUP12 SWAP1 MSTORE SWAP2 MLOAD SWAP3 DUP9 AND SWAP4 POP PUSH4 0xF7013EF6 SWAP3 PUSH1 0xA4 DUP1 DUP5 ADD SWAP4 DUP3 SWAP1 SUB ADD DUP2 DUP4 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x11CC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x11E0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP11 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP16 DUP7 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP1 SLOAD DUP8 DUP14 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP2 DUP3 AND DUP2 OR SWAP1 SWAP3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 DUP2 ADD DUP3 SSTORE SWAP7 DUP2 SWAP1 MSTORE PUSH32 0x36B6384B5ECA791C62761152D0C79BB0604C104A5FB6F4EB0703F3154BB3DB0 SWAP1 SWAP7 ADD DUP1 SLOAD SWAP1 SWAP2 AND DUP3 OR SWAP1 SSTORE SWAP4 SLOAD DUP3 MLOAD SWAP7 DUP14 AND DUP8 MSTORE SWAP3 DUP7 ADD SWAP4 SWAP1 SWAP4 MSTORE DUP5 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE MLOAD SWAP2 SWAP4 POP SWAP2 PUSH32 0xA2D65E38BD2BF6CB3385FB3F58BFE90CAADCEA402EC5D5808DA6EA171F11BBA1 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP POP JUMPDEST SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH21 0x10000000000000000000000000000000000000000 SWAP1 DIV PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1383 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFF0000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH21 0x10000000000000000000000000000000000000000 PUSH8 0xFFFFFFFFFFFFFFFF SWAP6 DUP7 AND MUL OR SWAP1 SSTORE PUSH1 0x3 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000 AND SWAP3 DUP5 AND SWAP3 SWAP1 SWAP3 OR PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000FFFFFFFFFFFFFFFF AND PUSH9 0x10000000000000000 SWAP2 SWAP1 SWAP4 AND MUL SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x3 SLOAD PUSH8 0xFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0xA DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1503 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0xB DUP2 JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x15D5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x2 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH2 0x3012 DUP1 PUSH2 0x162A DUP4 CODECOPY ADD SWAP1 JUMP INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x5A PUSH1 0xE SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x46655377617 PUSH1 0xD4 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x84AAF7FDA2A4DCB5E79FA4719E805D2B354FAFD29C5E5E9F8F62249697C6FBCD DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2F0E DUP1 PUSH2 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DAF390B GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x691 JUMPI DUP1 PUSH4 0xF7013EF6 EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x71F JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0xD0202D3B EQ PUSH2 0x62B JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x89AFCB44 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0xA1F497D6 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AF JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6DAF390B EQ PUSH2 0x4C8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x50B JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x495 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x2EC2FE3D EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x45F JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x9F5D055 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x9F5D055 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x1C6DA724 EQ PUSH2 0x351 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2AD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x764 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26F PUSH2 0x79D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x80D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x813 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x302 PUSH2 0x8E0 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF31 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x100A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x467 PUSH2 0x104A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x302 PUSH2 0x1055 JUMP JUMPDEST PUSH2 0x302 PUSH2 0x105B JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1061 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1403 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x141F JUMP JUMPDEST PUSH2 0x302 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1437 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1449 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH2 0x18D5 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x190E JUMP JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1999 JUMP JUMPDEST PUSH2 0x302 PUSH2 0x19A6 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19AC JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1B99 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1BD1 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1E9D JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x1EBA JUMP JUMPDEST PUSH2 0x727 PUSH2 0x207C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4665537761700000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xD SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP4 PUSH15 0x10000000000000000000000000000 DUP5 DIV SWAP1 SWAP2 AND SWAP3 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x803 CALLER DUP5 DUP5 PUSH2 0x226F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x899 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x957 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE DUP4 PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E92 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND DUP1 DUP7 LT PUSH2 0xA49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E53554646494349454E545F4C49515549444954590000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0xAAE JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0xB19 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F544F0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB24 DUP2 DUP11 DUP13 PUSH2 0x22DE JUMP JUMPDEST DUP7 ISZERO PUSH2 0xBE8 JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x387D768A CALLER DUP13 DUP12 DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP4 GT PUSH2 0xD41 JUMPI PUSH1 0x0 PUSH2 0xD55 JUMP JUMPDEST DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xD79 JUMPI PUSH1 0x0 PUSH2 0xD8F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xDA0 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xDF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E71 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE17 PUSH2 0xE05 DUP4 PUSH1 0x3 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0xE11 DUP7 PUSH2 0x3E8 PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 PUSH2 0x3E8 PUSH2 0xE3C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP1 DUP11 AND PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0xE4C DUP7 DUP4 PUSH2 0x24EB JUMP JUMPDEST LT ISZERO PUSH2 0xEB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204B0000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEC5 DUP6 DUP6 DUP10 DUP10 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 CALLER SWAP2 PUSH32 0xFCFA612587D1091CC6D8CE39878A7E6E8742C856865FC9D64DB3E1A2F1AB52EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xFF5 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xFC3 SWAP1 DUP4 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x1000 DUP5 DUP5 DUP5 PUSH2 0x2899 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x10D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x0 DUP1 PUSH2 0x10E4 PUSH2 0x79D JUMP JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x115F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1216 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x122C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x124C DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x126A DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1280 PUSH2 0x127B DUP5 DUP5 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0x296E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x128E DUP9 DUP9 PUSH2 0x29C0 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x12B9 JUMPI PUSH2 0x12A5 DUP4 PUSH2 0x3E8 PUSH2 0x2571 JUMP JUMPDEST SWAP10 POP PUSH2 0x12B4 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2BFF JUMP JUMPDEST PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1307 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x12D7 DUP8 DUP5 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x12DE JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x12FA DUP8 DUP6 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x1301 JUMPI INVALID JUMPDEST DIV PUSH2 0x2CA3 JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH1 0x0 DUP11 GT PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E4C PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP12 DUP12 PUSH2 0x2BFF JUMP JUMPDEST PUSH2 0x1379 DUP8 DUP8 DUP12 DUP12 PUSH2 0x25E3 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x13B5 JUMPI PUSH1 0x9 SLOAD PUSH2 0x13B1 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x24EB JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP SWAP6 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x14BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x0 DUP1 PUSH2 0x14CD PUSH2 0x79D JUMP JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1564 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1602 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1637 DUP9 DUP9 PUSH2 0x29C0 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1648 DUP5 DUP8 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x164F JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x165D DUP5 DUP7 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x1664 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x1677 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x16CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2EB4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x16D6 ADDRESS DUP5 PUSH2 0x2CBB JUMP JUMPDEST PUSH2 0x16E1 DUP8 DUP14 DUP14 PUSH2 0x22DE JUMP JUMPDEST PUSH2 0x16EC DUP7 DUP14 DUP13 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x176C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1782 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1808 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x182E DUP6 DUP6 DUP12 DUP12 PUSH2 0x25E3 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x186A JUMPI PUSH1 0x9 SLOAD PUSH2 0x1866 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x24EB JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x5A PUSH1 0xE DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4645535000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1994 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x803 CALLER DUP5 DUP5 PUSH2 0x2899 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x1A1D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x1AF3 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x1AEE SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x2571 JUMP JUMPDEST PUSH2 0x22DE JUMP JUMPDEST PUSH2 0x1B8F DUP2 DUP5 PUSH2 0x1AEE PUSH1 0x9 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1C40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20455850495245440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1E1C JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1E87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F5349474E415455524500000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1E92 DUP10 DUP10 DUP10 PUSH2 0x226F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1F40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x8 DUP1 SLOAD DUP8 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1FAE JUMPI PUSH1 0xD DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2049 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x205D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2073 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x20F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP5 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND SWAP3 PUSH2 0x2266 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2247 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 DUP5 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0x5A PUSH1 0xE SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23E4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x23A7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2446 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x244B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2479 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2479 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x24E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A205452414E534645525F4641494C4544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2506 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2503 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x260F JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x267A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204F564552464C4F5700000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x26CA JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x26E5 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x278F JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x2722 DUP6 PUSH2 0x26FE DUP7 PUSH2 0x2D74 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x2D98 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2762 DUP5 PUSH2 0x26FE DUP8 PUSH2 0x2D74 JUMP JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x28C9 SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2905 SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x29B1 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29AB JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x299A JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x29A3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2983 JUMP JUMPDEST POP PUSH2 0x29BB JUMP JUMPDEST DUP2 ISZERO PUSH2 0x29BB JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2EAB7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x2A9E JUMPI POP PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH1 0xC SLOAD SWAP1 SWAP4 POP DUP4 ISZERO PUSH2 0x2BEA JUMPI DUP1 ISZERO PUSH2 0x2BE5 JUMPI PUSH1 0x0 PUSH2 0x2AD2 PUSH2 0x127B PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND SWAP1 DUP10 AND PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2ADF DUP4 PUSH2 0x296E JUMP JUMPDEST SWAP1 POP PUSH2 0x2AEC DUP2 PUSH1 0x14 PUSH2 0x2DD9 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x2BE2 JUMPI PUSH1 0x0 PUSH2 0x2B10 PUSH1 0x6 PUSH2 0xE3C PUSH2 0x2B07 DUP7 DUP7 PUSH2 0x2571 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B28 DUP4 PUSH2 0x2B22 DUP7 DUP10 PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x2DD9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B37 DUP3 PUSH1 0xA PUSH2 0x24EB JUMP JUMPDEST DUP4 DUP2 PUSH2 0x2B3F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x2B69 JUMPI POP PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2B91 JUMPI PUSH1 0x6 SLOAD PUSH2 0x2B91 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x2BFF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B9E DUP4 PUSH1 0xF PUSH2 0x24EB JUMP JUMPDEST DUP5 DUP2 PUSH2 0x2BA6 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x2BCE JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BDD JUMPI PUSH2 0x2BDD DUP10 DUP3 PUSH2 0x2BFF JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x2BF6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2BF6 JUMPI PUSH1 0x0 PUSH1 0xC SSTORE JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2C0C SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2C3E SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x2CB2 JUMPI DUP2 PUSH2 0x2CB4 JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2CEB SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2D1F SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x2DD1 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 BYTE MULMOD MOD RETURN DUP14 OR 0xC1 0xD9 0xE8 0xBC 0x2F PUSH20 0x99930D121217FA2ACEE35DB092A20C4D49AF1964 PUSH20 0x6F6C634300060C0033A2646970667358221220C3 0xDF PUSH12 0xFE5ED511FB76741EECBC492C PUSH22 0xDA690A19C504DFDEDE9058F379A9851664736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "138:5691:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1591:146;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;563:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4384:180;;;;;;;;;;;;;;;;-1:-1:-1;4384:180:1;;;;:::i;:::-;;736:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;520:36;;;:::i;918:34::-;;;;;;;;;;;;;;;;-1:-1:-1;918:34:1;;:::i;282:56::-;;;:::i;5271:554::-;;;;;;;;;;;;;;;;-1:-1:-1;5271:554:1;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1472:105::-;;;:::i;:::-;;;;;;;;;;;;;;;;599:36;;;:::i;1745:2471::-;;;;;;;;;;;;;;;;-1:-1:-1;1745:2471:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;642:41;;;:::i;4825:378::-;;;;;;;;;;;;;;;;-1:-1:-1;4825:378:1;;;;;;;;;;;;;;;;;;;;:::i;690:39::-;;;:::i;840:71::-;;;;;;;;;;;;;;;;-1:-1:-1;840:71:1;;;;;;;;;;;:::i;186:56::-;;;:::i;4224:152::-;;;;;;;;;;;;;;;;-1:-1:-1;4224:152:1;;;;:::i;378:56::-;;;:::i;4572:241::-;;;;;;;;;;;;;;;;-1:-1:-1;4572:241:1;;;;:::i;1591:146::-;1706:5;;1713:15;;1706:5;;;;;1713:15;;;;;;;1591:146::o;563:29::-;;;;;;:::o;4384:180::-;4483:12;;;;4469:10;:26;4461:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4528:12;:28;;;;;;;;;;;;;;;4384:180::o;736:38::-;;;;;;;;;:::o;520:36::-;;;;;;:::o;918:34::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;918:34:1;:::o;282:56::-;336:2;282:56;:::o;5271:554::-;5419:12;;;;5405:10;:26;5397:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5482:16;;;;5464:15;5482:16;;;:7;:16;;;;;;;;:25;;;;;;;;;;;5536:16;;;;;;:25;;;;;;;;;;5482;;;;5536;5590:21;5582:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5648:79;;;;;;:31;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;5725:1;5648:79;;;;;;;;:31;;;;;;:79;;;;;;;;;;;5725:1;5648:31;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5738:79:1;;;;;;:31;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;5815:1;5738:79;;;;;;;;:31;;;;-1:-1:-1;5738:31:1;;-1:-1:-1;5738:79:1;;;;;5815:1;5738:79;;;;;5815:1;5738:31;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5271:554;;;;;;:::o;1472:105::-;1554:8;:15;1472:105;:::o;599:36::-;;;;;;:::o;1745:2471::-;1870:15;1887;1934:6;1924:16;;:6;:16;;;;1916:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2051:20;;;;;;;:44;;-1:-1:-1;2075:20:1;;;;;2051:44;:74;;;;-1:-1:-1;2099:12:1;;:26;:12;:26;;2051:74;2043:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:12;;;;2171:10;:26;;2170:60;;-1:-1:-1;2217:12:1;;;;2203:10;:26;2170:60;2162:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2287:16;;;;2272:31;;;2264:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2351:15;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;;-1:-1:-1;2388:21:1;;2385:1824;;-1:-1:-1;2436:15:1;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;2493:32;;;;;;;2436:23;;;;2493:30;;;;;:32;;;;2436:15;;2493:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2493:32:1;;-1:-1:-1;2543:19:1;;;;;;;;2540:291;;2595:7;2583:29;;;2613:9;2583:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2708:7;2696:29;;;2726:9;2696:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2786:7;2760:55;;2777:7;2760:55;;;2795:8;2805:9;2760:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;2540:291;2848:14;;2845:307;;2926:18;;;;;;;;;;;2945:1;2926:20;2910:36;;:11;2922:1;2910:13;:36;2949:5;2910:44;2896:58;;3006:7;2994:40;;;3035:11;2994:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3079:7;3067:40;;;3108:11;3067:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2845:307;2385:1824;;;;3184:21;3208:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3280:32;;;;;;;3208:29;3280:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3270:43;;;;;;3356:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3346:43;;;;;;;;;3473:15;;3208:29;;-1:-1:-1;3270:43:1;;;;3208:29;;3252:15;3443:55;3432:66;;3574:7;3563:8;3557:15;3552:2;3542:8;3538:17;3535:1;3527:55;3516:66;-1:-1:-1;3616:16:1;3613:53;;3648:18;;;;;;;;-1:-1:-1;3613:53:1;3711:18;;3756:85;;;;;;:31;:85;;;3730:1;3756:85;;;;;;;;;;;;;;;;;;;;;3815:12;;;3756:85;;;;3711:18;;;;;;;;:20;;;3695:36;;;3707:1;3695:13;;;;:36;;;;3734:5;3695:44;3756:85;;;;;;;;3695:44;;3756:31;;;;;;:85;;;;;-1:-1:-1;;3756:85:1;;;;;;;-1:-1:-1;3756:31:1;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3856:15:1;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;:33;;;;;;;;;;;;;;3904:8;:22;;3856:33;3904:22;;;;;;;;;;;;;;;;;;;4002:12;;3943:85;;;;;;;;;;;;;;;;;;;;;;;;;;4002:12;;3943:85;;;;;;;;;;;;:31;;;;-1:-1:-1;3943:31:1;;:85;;;;;;;;;;3856:15;3943:31;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4043:15:1;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:33;;;;;;;;;;;;;;4091:8;:22;;4043:33;4091:22;;;;;;;;;;;;;;;;;;;;;4181:15;;4135:62;;;;;;;;;;;;;;;;;;;;;;4043:15;;-1:-1:-1;4043:23:1;4135:62;;;;;;;;;;2385:1824;;;;1745:2471;;;;;;;:::o;642:41::-;;;;;;;;;:::o;4825:378::-;4968:12;;;;4954:10;:26;4946:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5013:18;:36;;;;;;;;;;;;;5060:16;:32;;;;;;;;;;;5103:40;;;;;;;;;;;;;;4825:378::o;690:39::-;;;;;;:::o;840:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;186:56::-;240:2;186:56;:::o;4224:152::-;4309:12;;;;4295:10;:26;4287:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4354:5;:14;;;;;;;;;;;;;;;4224:152::o;378:56::-;432:2;378:56;:::o;4572:241::-;4671:12;;;;4657:10;:26;4649:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4716:12;:28;;;;;;;;;;;;;;;4572:241::o;-1:-1:-1:-;;;;;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factoryAdmin\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pairAAB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pairABB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"allPairsLength\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pairAAB\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"pairABB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"oldOwner\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"newOwner\",\"type\":\"address\"}],\"name\":\"PairOwnerChanged\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"RATE_CAP_TRIGGER_ARBITRAGE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_PROFIT_SHARE\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"RATE_TRIGGER_FACTORY\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"newTriggerRate\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"newRateCap\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"newProfitShareRate\",\"type\":\"uint64\"}],\"name\":\"configFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pairOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rateTrigger\",\"type\":\"uint256\"}],\"name\":\"createUpdatePair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pairAAB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pairABB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factoryAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"_rateProfitShare\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_routerFeSwap\",\"type\":\"address\"}],\"name\":\"managePair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateCapArbitrage\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateProfitShare\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateTriggerFactory\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"routerFeSwap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factoryAdmin\",\"type\":\"address\"}],\"name\":\"setFactoryAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_feeTo\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_routerFeSwap\",\"type\":\"address\"}],\"name\":\"setRouterFeSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FeSwapFactory.sol\":\"FeSwapFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeSwapERC20.sol\":{\"keccak256\":\"0xbf63cdbef80c105090a8ccfcf292e2932bd6b22ca661dc4fc9b9de855c327f02\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://50cf9770bc6279400f3eb0b27a20fad862be24af16f13efd9515f423557eefdc\",\"dweb:/ipfs/QmZz7dA3QVsVykNnt3kMyNvnnqybftPktbVGAsPf34bY8w\"]},\"contracts/FeSwapFactory.sol\":{\"keccak256\":\"0x8e05d041be8421dd4a784fd638e3e08c281fe2a4107489eabdf70017c9113cf9\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://babb8cea3366acaf91032c98e3df765e1eaa898c18238d4f64cb72a47019281d\",\"dweb:/ipfs/QmPdZXVfaQZSVFqaime1X7tUC391B73MqtHQSdHqdHFnkv\"]},\"contracts/FeSwapPair.sol\":{\"keccak256\":\"0x1a91464a15cdbcec19f57b5535365ab25892bf0742f19605f11bdaaa0e5fb71c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ed562b8083aaca01edca765d3c063d790d8e3be2dfa45254b4d1669a9196d021\",\"dweb:/ipfs/QmUR42S1dkPdLLGJRLFFefEb6r7Fj3HdpEhTgzavPUTiz2\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xffa99694f4e4032bb172355a8a945673f2b478dd8beaae2924be031d508840e6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a4797ac84843f2e7390441a1e906f99ae88470b85dbc33986d2b157cbafb879a\",\"dweb:/ipfs/QmSQcCyUgUfwSkqyu9aAAw8LcRjcMFYv7omtYfUWkYKXKQ\"]},\"contracts/interfaces/IFeSwapCallee.sol\":{\"keccak256\":\"0x8da1282693196e0e9b909c0b4f4b420754f1dbd433a4f455078bb8b8cc331a0b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f4f2e06a02707f6a72b489af5eb5b6bc32130319f936cc1b3b3b1980fb07e280\",\"dweb:/ipfs/QmZ9yddVbCHY2rknF8QNTB9z2zYHkvbmnaShVf4K4hnpqL\"]},\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]},\"contracts/interfaces/IFeSwapFactory.sol\":{\"keccak256\":\"0x6380263efaf08b4bbb55a8441149baa7e350cfb7ef2ab4d7d1b9459048e47d64\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ed8209bcab83952ee61eead083e52e6396b6c8e9b4aa1c4e382f93bef60039d\",\"dweb:/ipfs/QmQuszK4Sw3NKZqvkhN6WYcjmgzzgegvY8a4joxEsJykye\"]},\"contracts/interfaces/IFeSwapPair.sol\":{\"keccak256\":\"0x480046bc17bd6578c1943d7b487ed45183c581625b8abed2b97a48db1220c1d0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3dc34bc6ffcb16588ecd57a6fbe28595f6e2eda02ca13c6864708477bce9afcc\",\"dweb:/ipfs/QmVrkT7MXCc3SqrHaVb1arfndaJGfPeve4Q57Lc34xCChj\"]},\"contracts/libraries/Math.sol\":{\"keccak256\":\"0x0633fc66085fcd3edb82ac6b16838dbfd1582b0299676c2889ff9adae956b8ca\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0b3f837831263e99a9e51c5f3dbe8b6bb77f8bbd611df3554aa8051f0916e030\",\"dweb:/ipfs/QmdYuTL39Ey484BEedoMLfRuhHHLGK4i9gEGzeH8jC2Ji1\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xf04a5109c9205c67202d408fdf6ce80ec28fcd93702bdba158d88aae5a6573ad\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ee35c811f41747d96f6946388815e9bf4d6c72dd3ddec7f1de3815979f3f415\",\"dweb:/ipfs/QmZFQ9oBd3DyZbzNf7eTesDxjNxyzpyPcxSC8w9RVRpNPM\"]},\"contracts/libraries/UQ112x112.sol\":{\"keccak256\":\"0xc74700f2fa4a4396b83cafb9bc9776eb0c212da6af3f05287b690c14a5246dc1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://da90a3b6d524567a221aac08958011a3924c85b22d52f67a65ce3015478fe19c\",\"dweb:/ipfs/QmcuYJZMRA79gVFGh9Nr89VzvKXgvUAGKaY1nDvoFxT4mt\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b5060405161471b38038061471b8339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0390921691909117815560028054600160a01b600160e01b031916600560a11b1790556003805460326001600160401b031990911617600160401b600160801b031916680b00000000000000001790556146719081906100aa90396000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c8063687d5b7f116100cd578063e6a4390511610081578063f46901ed11610066578063f46901ed146103d0578063f71e3a5414610403578063fd5dd6d41461040b57610150565b8063e6a439051461038d578063f3767beb146103c857610150565b8063d5322488116100b2578063d532248814610344578063d75966771461034c578063d886d63d1461038557610150565b8063687d5b7f146102aa578063883d2730146102b257610150565b806317d8ec7f1161012457806351a056d11161010957806351a056d11461023d57806353a081d414610245578063574f2ba31461029057610150565b806317d8ec7f146102185780631e3dd18b1461022057610150565b806202eab714610155578063017e7e581461018d57806305dfd86f146101be57806316fc2115146101f3575b600080fd5b61015d61043e565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091528051918290030190f35b610195610477565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f1600480360360208110156101d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610493565b005b6101fb610560565b6040805167ffffffffffffffff9092168252519081900360200190f35b61019561057c565b6101956004803603602081101561023657600080fd5b5035610598565b6101fb6105cc565b6101f16004803603608081101561025b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160600135166105d1565b61029861085e565b60408051918252519081900360200190f35b610195610864565b6102fb600480360360808110156102c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610880565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6101fb6112d5565b6101f16004803603606081101561036257600080fd5b5067ffffffffffffffff81358116916020810135821691604090910135166112fd565b6101fb611435565b610195600480360360408110156103a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611445565b6101fb611478565b6101f1600480360360208110156103e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661147d565b6101fb61154a565b6101f16004803603602081101561042157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661154f565b60015460035473ffffffffffffffffffffffffffffffffffffffff909116916801000000000000000090910467ffffffffffffffff1690565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461051957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035468010000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106105a557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b603281565b60005473ffffffffffffffffffffffffffffffffffffffff16331461065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808516600081815260046020818152604080842089871685528252808420549282528084209484529390529190205490821691168161070c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4665537761703a204e4f20544f4b454e20504149520000000000000000000000604482015290519081900360640190fd5b604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301528681166044830152858116606483015260006084830181905292519085169263f7013ef69260a4808201939182900301818387803b15801561079957600080fd5b505af11580156107ad573d6000803e3d6000fd5b5050604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528a81166024830152888116604483015287811660648301526000608483018190529251908616945063f7013ef6935060a4808301939282900301818387803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b50505050505050505050565b60055490565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000808473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561091e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4665537761703a204944454e544943414c5f4144445245535345530000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff861615801590610958575073ffffffffffffffffffffffffffffffffffffffff851615155b801561097b575060025473ffffffffffffffffffffffffffffffffffffffff1615155b6109e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a205a45524f5f41444452455353000000000000000000000000604482015290519081900360640190fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610a23575060025473ffffffffffffffffffffffffffffffffffffffff1633145b610a8e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b60035467ffffffffffffffff16831115610b0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a2047415020544f4f204d4f5245000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808716600090815260046020908152604080832089851684529091529020541691508115610ec7575073ffffffffffffffffffffffffffffffffffffffff80851660009081526004602081815260408084208a8616855282528084205481517f2ec2fe3d000000000000000000000000000000000000000000000000000000008152915190861695871693632ec2fe3d938382019390929190829003018186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff80821690861614610db5578273ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8f58980d5959b1ea236fdaf1fee2ac14b0a3b29f692eff32a5672de85d5724988388604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a35b8315610ec157600260149054906101000a900467ffffffffffffffff1660040267ffffffffffffffff1684600602016127100193508273ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ea857600080fd5b505af1158015610ebc573d6000803e3d6000fd5b505050505b506112cc565b606060405180602001610ed99061161c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408181527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b811b82166020858101829052918c901b90921660348501819052835160288187030181526048860185528051908301206068860191909152607c85019290925282516070818603018152609090940190925282519282019290922083519394509192839185016000f59450808351602085016000f5935085610fd45760025474010000000000000000000000000000000000000000900467ffffffffffffffff1695505b600254604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004808401919091528c821660248401528b8216604484015281851660648401527401000000000000000000000000000000000000000090940467ffffffffffffffff908116909402909316600699909902989098016127100160848901819052905190979187169163f7013ef69160a480830192600092919082900301818387803b1580156110a557600080fd5b505af11580156110b9573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808b1660008181526004602081815260408084208f871680865292528084208054878e167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600580546001810182559087527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909116909117905560025481517ff7013ef60000000000000000000000000000000000000000000000000000000081529384019290925260248301949094528c8516604483015284166064820152608481018b90529151928816935063f7013ef69260a48084019382900301818387803b1580156111cc57600080fd5b505af11580156111e0573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808a1660008181526004602090815260408083208f86168085529083528184208054878d167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216811790925560058054600181018255968190527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090960180549091168217905593548251968d168752928601939093528481019190915251919350917fa2d65e38bd2bf6cb3385fb3f58bfe90caadcea402ec5d5808da6ea171f11bba1919081900360600190a35050505b94509492505050565b60025474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461138357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff95861602179055600380547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016928416929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000009190931602919091179055565b60035467ffffffffffffffff1681565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b600a81565b60005473ffffffffffffffffffffffffffffffffffffffff16331461150357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600b81565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6130128061162a8339019056fe6080604052605a600e5534801561001557600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612f0e806101046000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033a2646970667358221220c3df6bfe5ed511fb76741eecbc492c75da690a19c504dfdede9058f379a9851664736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b5060405161471b38038061471b8339818101604052602081101561003357600080fd5b5051600080546001600160a01b0319166001600160a01b0390921691909117815560028054600160a01b600160e01b031916600560a11b1790556003805460326001600160401b031990911617600160401b600160801b031916680b00000000000000001790556146719081906100aa90396000f3fe608060405234801561001057600080fd5b50600436106101505760003560e01c8063687d5b7f116100cd578063e6a4390511610081578063f46901ed11610066578063f46901ed146103d0578063f71e3a5414610403578063fd5dd6d41461040b57610150565b8063e6a439051461038d578063f3767beb146103c857610150565b8063d5322488116100b2578063d532248814610344578063d75966771461034c578063d886d63d1461038557610150565b8063687d5b7f146102aa578063883d2730146102b257610150565b806317d8ec7f1161012457806351a056d11161010957806351a056d11461023d57806353a081d414610245578063574f2ba31461029057610150565b806317d8ec7f146102185780631e3dd18b1461022057610150565b806202eab714610155578063017e7e581461018d57806305dfd86f146101be57806316fc2115146101f3575b600080fd5b61015d61043e565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091528051918290030190f35b610195610477565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f1600480360360208110156101d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610493565b005b6101fb610560565b6040805167ffffffffffffffff9092168252519081900360200190f35b61019561057c565b6101956004803603602081101561023657600080fd5b5035610598565b6101fb6105cc565b6101f16004803603608081101561025b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160600135166105d1565b61029861085e565b60408051918252519081900360200190f35b610195610864565b6102fb600480360360808110156102c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610880565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6101fb6112d5565b6101f16004803603606081101561036257600080fd5b5067ffffffffffffffff81358116916020810135821691604090910135166112fd565b6101fb611435565b610195600480360360408110156103a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611445565b6101fb611478565b6101f1600480360360208110156103e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661147d565b6101fb61154a565b6101f16004803603602081101561042157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661154f565b60015460035473ffffffffffffffffffffffffffffffffffffffff909116916801000000000000000090910467ffffffffffffffff1690565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461051957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035468010000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106105a557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b603281565b60005473ffffffffffffffffffffffffffffffffffffffff16331461065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808516600081815260046020818152604080842089871685528252808420549282528084209484529390529190205490821691168161070c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4665537761703a204e4f20544f4b454e20504149520000000000000000000000604482015290519081900360640190fd5b604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301528681166044830152858116606483015260006084830181905292519085169263f7013ef69260a4808201939182900301818387803b15801561079957600080fd5b505af11580156107ad573d6000803e3d6000fd5b5050604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528a81166024830152888116604483015287811660648301526000608483018190529251908616945063f7013ef6935060a4808301939282900301818387803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b50505050505050505050565b60055490565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000808473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561091e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4665537761703a204944454e544943414c5f4144445245535345530000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff861615801590610958575073ffffffffffffffffffffffffffffffffffffffff851615155b801561097b575060025473ffffffffffffffffffffffffffffffffffffffff1615155b6109e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a205a45524f5f41444452455353000000000000000000000000604482015290519081900360640190fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610a23575060025473ffffffffffffffffffffffffffffffffffffffff1633145b610a8e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b60035467ffffffffffffffff16831115610b0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a2047415020544f4f204d4f5245000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808716600090815260046020908152604080832089851684529091529020541691508115610ec7575073ffffffffffffffffffffffffffffffffffffffff80851660009081526004602081815260408084208a8616855282528084205481517f2ec2fe3d000000000000000000000000000000000000000000000000000000008152915190861695871693632ec2fe3d938382019390929190829003018186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff80821690861614610db5578273ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8f58980d5959b1ea236fdaf1fee2ac14b0a3b29f692eff32a5672de85d5724988388604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a35b8315610ec157600260149054906101000a900467ffffffffffffffff1660040267ffffffffffffffff1684600602016127100193508273ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ea857600080fd5b505af1158015610ebc573d6000803e3d6000fd5b505050505b506112cc565b606060405180602001610ed99061161c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408181527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b811b82166020858101829052918c901b90921660348501819052835160288187030181526048860185528051908301206068860191909152607c85019290925282516070818603018152609090940190925282519282019290922083519394509192839185016000f59450808351602085016000f5935085610fd45760025474010000000000000000000000000000000000000000900467ffffffffffffffff1695505b600254604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004808401919091528c821660248401528b8216604484015281851660648401527401000000000000000000000000000000000000000090940467ffffffffffffffff908116909402909316600699909902989098016127100160848901819052905190979187169163f7013ef69160a480830192600092919082900301818387803b1580156110a557600080fd5b505af11580156110b9573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808b1660008181526004602081815260408084208f871680865292528084208054878e167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600580546001810182559087527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909116909117905560025481517ff7013ef60000000000000000000000000000000000000000000000000000000081529384019290925260248301949094528c8516604483015284166064820152608481018b90529151928816935063f7013ef69260a48084019382900301818387803b1580156111cc57600080fd5b505af11580156111e0573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808a1660008181526004602090815260408083208f86168085529083528184208054878d167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216811790925560058054600181018255968190527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090960180549091168217905593548251968d168752928601939093528481019190915251919350917fa2d65e38bd2bf6cb3385fb3f58bfe90caadcea402ec5d5808da6ea171f11bba1919081900360600190a35050505b94509492505050565b60025474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461138357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff95861602179055600380547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016928416929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000009190931602919091179055565b60035467ffffffffffffffff1681565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b600a81565b60005473ffffffffffffffffffffffffffffffffffffffff16331461150357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600b81565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6130128061162a8339019056fe6080604052605a600e5534801561001557600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612f0e806101046000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033a2646970667358221220c3df6bfe5ed511fb76741eecbc492c75da690a19c504dfdede9058f379a9851664736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106101505760003560e01c8063687d5b7f116100cd578063e6a4390511610081578063f46901ed11610066578063f46901ed146103d0578063f71e3a5414610403578063fd5dd6d41461040b57610150565b8063e6a439051461038d578063f3767beb146103c857610150565b8063d5322488116100b2578063d532248814610344578063d75966771461034c578063d886d63d1461038557610150565b8063687d5b7f146102aa578063883d2730146102b257610150565b806317d8ec7f1161012457806351a056d11161010957806351a056d11461023d57806353a081d414610245578063574f2ba31461029057610150565b806317d8ec7f146102185780631e3dd18b1461022057610150565b806202eab714610155578063017e7e581461018d57806305dfd86f146101be57806316fc2115146101f3575b600080fd5b61015d61043e565b6040805173ffffffffffffffffffffffffffffffffffffffff909316835260208301919091528051918290030190f35b610195610477565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6101f1600480360360208110156101d457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610493565b005b6101fb610560565b6040805167ffffffffffffffff9092168252519081900360200190f35b61019561057c565b6101956004803603602081101561023657600080fd5b5035610598565b6101fb6105cc565b6101f16004803603608081101561025b57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160600135166105d1565b61029861085e565b60408051918252519081900360200190f35b610195610864565b6102fb600480360360808110156102c857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101358216916040820135169060600135610880565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6101fb6112d5565b6101f16004803603606081101561036257600080fd5b5067ffffffffffffffff81358116916020810135821691604090910135166112fd565b6101fb611435565b610195600480360360408110156103a357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611445565b6101fb611478565b6101f1600480360360208110156103e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661147d565b6101fb61154a565b6101f16004803603602081101561042157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661154f565b60015460035473ffffffffffffffffffffffffffffffffffffffff909116916801000000000000000090910467ffffffffffffffff1690565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461051957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035468010000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b600581815481106105a557fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b603281565b60005473ffffffffffffffffffffffffffffffffffffffff16331461065757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808516600081815260046020818152604080842089871685528252808420549282528084209484529390529190205490821691168161070c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f4665537761703a204e4f20544f4b454e20504149520000000000000000000000604482015290519081900360640190fd5b604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff888116600483015287811660248301528681166044830152858116606483015260006084830181905292519085169263f7013ef69260a4808201939182900301818387803b15801561079957600080fd5b505af11580156107ad573d6000803e3d6000fd5b5050604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff89811660048301528a81166024830152888116604483015287811660648301526000608483018190529251908616945063f7013ef6935060a4808301939282900301818387803b15801561083e57600080fd5b505af1158015610852573d6000803e3d6000fd5b50505050505050505050565b60055490565b60025473ffffffffffffffffffffffffffffffffffffffff1681565b6000808473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141561091e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f4665537761703a204944454e544943414c5f4144445245535345530000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff861615801590610958575073ffffffffffffffffffffffffffffffffffffffff851615155b801561097b575060025473ffffffffffffffffffffffffffffffffffffffff1615155b6109e657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a205a45524f5f41444452455353000000000000000000000000604482015290519081900360640190fd5b60005473ffffffffffffffffffffffffffffffffffffffff16331480610a23575060025473ffffffffffffffffffffffffffffffffffffffff1633145b610a8e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b60035467ffffffffffffffff16831115610b0957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f4665537761703a2047415020544f4f204d4f5245000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808716600090815260046020908152604080832089851684529091529020541691508115610ec7575073ffffffffffffffffffffffffffffffffffffffff80851660009081526004602081815260408084208a8616855282528084205481517f2ec2fe3d000000000000000000000000000000000000000000000000000000008152915190861695871693632ec2fe3d938382019390929190829003018186803b158015610bcb57600080fd5b505afa158015610bdf573d6000803e3d6000fd5b505050506040513d6020811015610bf557600080fd5b5051905073ffffffffffffffffffffffffffffffffffffffff80821690861614610db5578273ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610c8257600080fd5b505af1158015610c96573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff166313af4035866040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015610d0357600080fd5b505af1158015610d17573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8f58980d5959b1ea236fdaf1fee2ac14b0a3b29f692eff32a5672de85d5724988388604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060405180910390a35b8315610ec157600260149054906101000a900467ffffffffffffffff1660040267ffffffffffffffff1684600602016127100193508273ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610e3d57600080fd5b505af1158015610e51573d6000803e3d6000fd5b505050508173ffffffffffffffffffffffffffffffffffffffff1663a1f497d6856040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610ea857600080fd5b505af1158015610ebc573d6000803e3d6000fd5b505050505b506112cc565b606060405180602001610ed99061161c565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082820381018352601f9091011660408181527fffffffffffffffffffffffffffffffffffffffff00000000000000000000000060608b811b82166020858101829052918c901b90921660348501819052835160288187030181526048860185528051908301206068860191909152607c85019290925282516070818603018152609090940190925282519282019290922083519394509192839185016000f59450808351602085016000f5935085610fd45760025474010000000000000000000000000000000000000000900467ffffffffffffffff1695505b600254604080517ff7013ef600000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8c81166004808401919091528c821660248401528b8216604484015281851660648401527401000000000000000000000000000000000000000090940467ffffffffffffffff908116909402909316600699909902989098016127100160848901819052905190979187169163f7013ef69160a480830192600092919082900301818387803b1580156110a557600080fd5b505af11580156110b9573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808b1660008181526004602081815260408084208f871680865292528084208054878e167fffffffffffffffffffffffff00000000000000000000000000000000000000009182168117909255600580546001810182559087527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db0018054909116909117905560025481517ff7013ef60000000000000000000000000000000000000000000000000000000081529384019290925260248301949094528c8516604483015284166064820152608481018b90529151928816935063f7013ef69260a48084019382900301818387803b1580156111cc57600080fd5b505af11580156111e0573d6000803e3d6000fd5b50505073ffffffffffffffffffffffffffffffffffffffff808a1660008181526004602090815260408083208f86168085529083528184208054878d167fffffffffffffffffffffffff0000000000000000000000000000000000000000918216811790925560058054600181018255968190527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db090960180549091168217905593548251968d168752928601939093528481019190915251919350917fa2d65e38bd2bf6cb3385fb3f58bfe90caadcea402ec5d5808da6ea171f11bba1919081900360600190a35050505b94509492505050565b60025474010000000000000000000000000000000000000000900467ffffffffffffffff1681565b60005473ffffffffffffffffffffffffffffffffffffffff16331461138357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffff0000000000000000ffffffffffffffffffffffffffffffffffffffff167401000000000000000000000000000000000000000067ffffffffffffffff95861602179055600380547fffffffffffffffffffffffffffffffffffffffffffffffff000000000000000016928416929092177fffffffffffffffffffffffffffffffff0000000000000000ffffffffffffffff16680100000000000000009190931602919091179055565b60035467ffffffffffffffff1681565b600460209081526000928352604080842090915290825290205473ffffffffffffffffffffffffffffffffffffffff1681565b600a81565b60005473ffffffffffffffffffffffffffffffffffffffff16331461150357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b600b81565b60005473ffffffffffffffffffffffffffffffffffffffff1633146115d557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600280547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6130128061162a8339019056fe6080604052605a600e5534801561001557600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612f0e806101046000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033a2646970667358221220c3df6bfe5ed511fb76741eecbc492c75da690a19c504dfdede9058f379a9851664736f6c634300060c0033",
      "srcmap": "138:5691:1:-:0;;;1205:259;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1205:259:1;1258:12;:35;;-1:-1:-1;;;;;;1258:35:1;-1:-1:-1;;;;;1258:35:1;;;;;;;;;1304:18;:42;;-1:-1:-1;;;;;;;;1304:42:1;-1:-1:-1;;;1304:42:1;;;1357:16;:48;;336:2;-1:-1:-1;;;;;;1357:48:1;;;;-1:-1:-1;;;;;;;;1416:39:1;;;;;138:5691;;;;;;;;",
      "srcmap-runtime": "138:5691:1:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1591:146;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;563:29;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4384:180;;;;;;;;;;;;;;;;-1:-1:-1;4384:180:1;;;;:::i;:::-;;736:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;520:36;;;:::i;918:34::-;;;;;;;;;;;;;;;;-1:-1:-1;918:34:1;;:::i;282:56::-;;;:::i;5271:554::-;;;;;;;;;;;;;;;;-1:-1:-1;5271:554:1;;;;;;;;;;;;;;;;;;;;;;;;;:::i;1472:105::-;;;:::i;:::-;;;;;;;;;;;;;;;;599:36;;;:::i;1745:2471::-;;;;;;;;;;;;;;;;-1:-1:-1;1745:2471:1;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;642:41;;;:::i;4825:378::-;;;;;;;;;;;;;;;;-1:-1:-1;4825:378:1;;;;;;;;;;;;;;;;;;;;:::i;690:39::-;;;:::i;840:71::-;;;;;;;;;;;;;;;;-1:-1:-1;840:71:1;;;;;;;;;;;:::i;186:56::-;;;:::i;4224:152::-;;;;;;;;;;;;;;;;-1:-1:-1;4224:152:1;;;;:::i;378:56::-;;;:::i;4572:241::-;;;;;;;;;;;;;;;;-1:-1:-1;4572:241:1;;;;:::i;1591:146::-;1706:5;;1713:15;;1706:5;;;;;1713:15;;;;;;;1591:146::o;563:29::-;;;;;;:::o;4384:180::-;4483:12;;;;4469:10;:26;4461:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4528:12;:28;;;;;;;;;;;;;;;4384:180::o;736:38::-;;;;;;;;;:::o;520:36::-;;;;;;:::o;918:34::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;918:34:1;:::o;282:56::-;336:2;282:56;:::o;5271:554::-;5419:12;;;;5405:10;:26;5397:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5482:16;;;;5464:15;5482:16;;;:7;:16;;;;;;;;:25;;;;;;;;;;;5536:16;;;;;;:25;;;;;;;;;;5482;;;;5536;5590:21;5582:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5648:79;;;;;;:31;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;5725:1;5648:79;;;;;;;;:31;;;;;;:79;;;;;;;;;;;5725:1;5648:31;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;5738:79:1;;;;;;:31;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;5815:1;5738:79;;;;;;;;:31;;;;-1:-1:-1;5738:31:1;;-1:-1:-1;5738:79:1;;;;;5815:1;5738:79;;;;;5815:1;5738:31;:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5271:554;;;;;;:::o;1472:105::-;1554:8;:15;1472:105;:::o;599:36::-;;;;;;:::o;1745:2471::-;1870:15;1887;1934:6;1924:16;;:6;:16;;;;1916:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2051:20;;;;;;;:44;;-1:-1:-1;2075:20:1;;;;;2051:44;:74;;;;-1:-1:-1;2099:12:1;;:26;:12;:26;;2051:74;2043:108;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2185:12;;;;2171:10;:26;;2170:60;;-1:-1:-1;2217:12:1;;;;2203:10;:26;2170:60;2162:91;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2287:16;;;;2272:31;;;2264:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2351:15;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;;-1:-1:-1;2388:21:1;;2385:1824;;-1:-1:-1;2436:15:1;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;2493:32;;;;;;;2436:23;;;;2493:30;;;;;:32;;;;2436:15;;2493:32;;;;;;;:30;:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2493:32:1;;-1:-1:-1;2543:19:1;;;;;;;;2540:291;;2595:7;2583:29;;;2613:9;2583:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2708:7;2696:29;;;2726:9;2696:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2786:7;2760:55;;2777:7;2760:55;;;2795:8;2805:9;2760:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;2540:291;2848:14;;2845:307;;2926:18;;;;;;;;;;;2945:1;2926:20;2910:36;;:11;2922:1;2910:13;:36;2949:5;2910:44;2896:58;;3006:7;2994:40;;;3035:11;2994:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3079:7;3067:40;;;3108:11;3067:53;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2845:307;2385:1824;;;;3184:21;3208:29;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3280:32;;;;;;;3208:29;3280:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3270:43;;;;;;3356:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3346:43;;;;;;;;;3473:15;;3208:29;;-1:-1:-1;3270:43:1;;;;3208:29;;3252:15;3443:55;3432:66;;3574:7;3563:8;3557:15;3552:2;3542:8;3538:17;3535:1;3527:55;3516:66;-1:-1:-1;3616:16:1;3613:53;;3648:18;;;;;;;;-1:-1:-1;3613:53:1;3711:18;;3756:85;;;;;;:31;:85;;;3730:1;3756:85;;;;;;;;;;;;;;;;;;;;;3815:12;;;3756:85;;;;3711:18;;;;;;;;:20;;;3695:36;;;3707:1;3695:13;;;;:36;;;;3734:5;3695:44;3756:85;;;;;;;;3695:44;;3756:31;;;;;;:85;;;;;-1:-1:-1;;3756:85:1;;;;;;;-1:-1:-1;3756:31:1;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3856:15:1;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;:33;;;;;;;;;;;;;;3904:8;:22;;3856:33;3904:22;;;;;;;;;;;;;;;;;;;4002:12;;3943:85;;;;;;;;;;;;;;;;;;;;;;;;;;4002:12;;3943:85;;;;;;;;;;;;:31;;;;-1:-1:-1;3943:31:1;;:85;;;;;;;;;;3856:15;3943:31;:85;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4043:15:1;;;;;;;;:7;:15;;;;;;;;:23;;;;;;;;;;;;:33;;;;;;;;;;;;;;4091:8;:22;;4043:33;4091:22;;;;;;;;;;;;;;;;;;;;;4181:15;;4135:62;;;;;;;;;;;;;;;;;;;;;;4043:15;;-1:-1:-1;4043:23:1;4135:62;;;;;;;;;;2385:1824;;;;1745:2471;;;;;;;:::o;642:41::-;;;;;;;;;:::o;4825:378::-;4968:12;;;;4954:10;:26;4946:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5013:18;:36;;;;;;;;;;;;;5060:16;:32;;;;;;;;;;;5103:40;;;;;;;;;;;;;;4825:378::o;690:39::-;;;;;;:::o;840:71::-;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;186:56::-;240:2;186:56;:::o;4224:152::-;4309:12;;;;4295:10;:26;4287:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4354:5;:14;;;;;;;;;;;;;;;4224:152::o;378:56::-;432:2;378:56;:::o;4572:241::-;4671:12;;;;4657:10;:26;4649:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4716:12;:28;;;;;;;;;;;;;;;4572:241::o;-1:-1:-1:-;;;;;;;;:::o"
    },
    "contracts/FeSwapPair.sol:FeSwapPair": {
      "abi": [
        {
          "inputs": [],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserveIn",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserveOut",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newRate",
              "type": "uint256"
            }
          ],
          "name": "adjusArbitragetRate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserveIn",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserveOut",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "_rateTriggerArbitrage",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_tokenIn",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_tokenOut",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_pairOwner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rateTrigger",
              "type": "uint256"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairOwner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "rateTriggerArbitrage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pairOwner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserveIn",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserveOut",
              "type": "uint112"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tokenIn",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tokenOut",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "6080604052605a600e5534801561001557600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612f0e806101046000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x5A PUSH1 0xE SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x15 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x6 DUP2 MSTORE PUSH6 0x46655377617 PUSH1 0xD4 SHL PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0x84AAF7FDA2A4DCB5E79FA4719E805D2B354FAFD29C5E5E9F8F62249697C6FBCD DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP4 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP3 MSTORE DUP2 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH1 0x5 DUP1 SLOAD PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB NOT AND CALLER OR SWAP1 SSTORE PUSH2 0x2F0E DUP1 PUSH2 0x104 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DAF390B GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x691 JUMPI DUP1 PUSH4 0xF7013EF6 EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x71F JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0xD0202D3B EQ PUSH2 0x62B JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x89AFCB44 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0xA1F497D6 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AF JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6DAF390B EQ PUSH2 0x4C8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x50B JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x495 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x2EC2FE3D EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x45F JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x9F5D055 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x9F5D055 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x1C6DA724 EQ PUSH2 0x351 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2AD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x764 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26F PUSH2 0x79D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x80D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x813 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x302 PUSH2 0x8E0 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF31 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x100A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x467 PUSH2 0x104A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x302 PUSH2 0x1055 JUMP JUMPDEST PUSH2 0x302 PUSH2 0x105B JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1061 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1403 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x141F JUMP JUMPDEST PUSH2 0x302 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1437 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1449 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH2 0x18D5 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x190E JUMP JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1999 JUMP JUMPDEST PUSH2 0x302 PUSH2 0x19A6 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19AC JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1B99 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1BD1 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1E9D JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x1EBA JUMP JUMPDEST PUSH2 0x727 PUSH2 0x207C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4665537761700000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xD SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP4 PUSH15 0x10000000000000000000000000000 DUP5 DIV SWAP1 SWAP2 AND SWAP3 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x803 CALLER DUP5 DUP5 PUSH2 0x226F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x899 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x957 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE DUP4 PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E92 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND DUP1 DUP7 LT PUSH2 0xA49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E53554646494349454E545F4C49515549444954590000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0xAAE JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0xB19 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F544F0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB24 DUP2 DUP11 DUP13 PUSH2 0x22DE JUMP JUMPDEST DUP7 ISZERO PUSH2 0xBE8 JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x387D768A CALLER DUP13 DUP12 DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP4 GT PUSH2 0xD41 JUMPI PUSH1 0x0 PUSH2 0xD55 JUMP JUMPDEST DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xD79 JUMPI PUSH1 0x0 PUSH2 0xD8F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xDA0 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xDF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E71 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE17 PUSH2 0xE05 DUP4 PUSH1 0x3 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0xE11 DUP7 PUSH2 0x3E8 PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 PUSH2 0x3E8 PUSH2 0xE3C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP1 DUP11 AND PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0xE4C DUP7 DUP4 PUSH2 0x24EB JUMP JUMPDEST LT ISZERO PUSH2 0xEB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204B0000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEC5 DUP6 DUP6 DUP10 DUP10 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 CALLER SWAP2 PUSH32 0xFCFA612587D1091CC6D8CE39878A7E6E8742C856865FC9D64DB3E1A2F1AB52EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xFF5 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xFC3 SWAP1 DUP4 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x1000 DUP5 DUP5 DUP5 PUSH2 0x2899 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x10D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x0 DUP1 PUSH2 0x10E4 PUSH2 0x79D JUMP JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x115F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1216 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x122C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x124C DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x126A DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1280 PUSH2 0x127B DUP5 DUP5 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0x296E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x128E DUP9 DUP9 PUSH2 0x29C0 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x12B9 JUMPI PUSH2 0x12A5 DUP4 PUSH2 0x3E8 PUSH2 0x2571 JUMP JUMPDEST SWAP10 POP PUSH2 0x12B4 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2BFF JUMP JUMPDEST PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1307 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x12D7 DUP8 DUP5 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x12DE JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x12FA DUP8 DUP6 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x1301 JUMPI INVALID JUMPDEST DIV PUSH2 0x2CA3 JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH1 0x0 DUP11 GT PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E4C PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP12 DUP12 PUSH2 0x2BFF JUMP JUMPDEST PUSH2 0x1379 DUP8 DUP8 DUP12 DUP12 PUSH2 0x25E3 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x13B5 JUMPI PUSH1 0x9 SLOAD PUSH2 0x13B1 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x24EB JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP SWAP6 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x14BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x0 DUP1 PUSH2 0x14CD PUSH2 0x79D JUMP JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1564 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1602 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1637 DUP9 DUP9 PUSH2 0x29C0 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1648 DUP5 DUP8 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x164F JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x165D DUP5 DUP7 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x1664 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x1677 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x16CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2EB4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x16D6 ADDRESS DUP5 PUSH2 0x2CBB JUMP JUMPDEST PUSH2 0x16E1 DUP8 DUP14 DUP14 PUSH2 0x22DE JUMP JUMPDEST PUSH2 0x16EC DUP7 DUP14 DUP13 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x176C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1782 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1808 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x182E DUP6 DUP6 DUP12 DUP12 PUSH2 0x25E3 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x186A JUMPI PUSH1 0x9 SLOAD PUSH2 0x1866 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x24EB JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x5A PUSH1 0xE DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4645535000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1994 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x803 CALLER DUP5 DUP5 PUSH2 0x2899 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x1A1D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x1AF3 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x1AEE SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x2571 JUMP JUMPDEST PUSH2 0x22DE JUMP JUMPDEST PUSH2 0x1B8F DUP2 DUP5 PUSH2 0x1AEE PUSH1 0x9 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1C40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20455850495245440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1E1C JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1E87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F5349474E415455524500000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1E92 DUP10 DUP10 DUP10 PUSH2 0x226F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1F40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x8 DUP1 SLOAD DUP8 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1FAE JUMPI PUSH1 0xD DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2049 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x205D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2073 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x20F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP5 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND SWAP3 PUSH2 0x2266 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2247 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 DUP5 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0x5A PUSH1 0xE SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23E4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x23A7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2446 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x244B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2479 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2479 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x24E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A205452414E534645525F4641494C4544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2506 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2503 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x260F JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x267A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204F564552464C4F5700000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x26CA JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x26E5 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x278F JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x2722 DUP6 PUSH2 0x26FE DUP7 PUSH2 0x2D74 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x2D98 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2762 DUP5 PUSH2 0x26FE DUP8 PUSH2 0x2D74 JUMP JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x28C9 SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2905 SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x29B1 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29AB JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x299A JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x29A3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2983 JUMP JUMPDEST POP PUSH2 0x29BB JUMP JUMPDEST DUP2 ISZERO PUSH2 0x29BB JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2EAB7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x2A9E JUMPI POP PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH1 0xC SLOAD SWAP1 SWAP4 POP DUP4 ISZERO PUSH2 0x2BEA JUMPI DUP1 ISZERO PUSH2 0x2BE5 JUMPI PUSH1 0x0 PUSH2 0x2AD2 PUSH2 0x127B PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND SWAP1 DUP10 AND PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2ADF DUP4 PUSH2 0x296E JUMP JUMPDEST SWAP1 POP PUSH2 0x2AEC DUP2 PUSH1 0x14 PUSH2 0x2DD9 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x2BE2 JUMPI PUSH1 0x0 PUSH2 0x2B10 PUSH1 0x6 PUSH2 0xE3C PUSH2 0x2B07 DUP7 DUP7 PUSH2 0x2571 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B28 DUP4 PUSH2 0x2B22 DUP7 DUP10 PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x2DD9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B37 DUP3 PUSH1 0xA PUSH2 0x24EB JUMP JUMPDEST DUP4 DUP2 PUSH2 0x2B3F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x2B69 JUMPI POP PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2B91 JUMPI PUSH1 0x6 SLOAD PUSH2 0x2B91 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x2BFF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B9E DUP4 PUSH1 0xF PUSH2 0x24EB JUMP JUMPDEST DUP5 DUP2 PUSH2 0x2BA6 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x2BCE JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BDD JUMPI PUSH2 0x2BDD DUP10 DUP3 PUSH2 0x2BFF JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x2BF6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2BF6 JUMPI PUSH1 0x0 PUSH1 0xC SSTORE JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2C0C SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2C3E SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x2CB2 JUMPI DUP2 PUSH2 0x2CB4 JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2CEB SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2D1F SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x2DD1 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 BYTE MULMOD MOD RETURN DUP14 OR 0xC1 0xD9 0xE8 0xBC 0x2F PUSH20 0x99930D121217FA2ACEE35DB092A20C4D49AF1964 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
          "sourceMap": "325:11818:2:-:0;;;1483:4;1459:28;;3048:60;;;;;;;;;-1:-1:-1;1367:4:0;;;;;;;;;;;-1:-1:-1;1367:4:0;;;;;1402:10;;;;;;;;;;-1:-1:-1;1402:10:0;;;;1208:278;;1237:95;1208:278;;;;1351:22;1208:278;;;;1392:21;1208:278;;;;1135:9;1208:278;;;;1466:4;1208:278;;;;;;;;;;;;;;;;;;;;;;;;;1184:313;;;;;1165:16;:332;3080:7:2;:20;;-1:-1:-1;3080:20:2;3090:10;3080:20;;;-1:-1:-1;;325:11818:2;-1:-1:-1;325:11818:2;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1E5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6DAF390B GT PUSH2 0x10F JUMPI DUP1 PUSH4 0xBA9A7A56 GT PUSH2 0xA2 JUMPI DUP1 PUSH4 0xD505ACCF GT PUSH2 0x71 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x633 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x691 JUMPI DUP1 PUSH4 0xF7013EF6 EQ PUSH2 0x6CC JUMPI DUP1 PUSH4 0xFFF6CAE9 EQ PUSH2 0x71F JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0xBA9A7A56 EQ PUSH2 0x5E8 JUMPI DUP1 PUSH4 0xBC25CF77 EQ PUSH2 0x5F0 JUMPI DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x623 JUMPI DUP1 PUSH4 0xD0202D3B EQ PUSH2 0x62B JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x89AFCB44 GT PUSH2 0xDE JUMPI DUP1 PUSH4 0x89AFCB44 EQ PUSH2 0x53E JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x58A JUMPI DUP1 PUSH4 0xA1F497D6 EQ PUSH2 0x592 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x5AF JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6DAF390B EQ PUSH2 0x4C8 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x4D0 JUMPI DUP1 PUSH4 0x7464FC3D EQ PUSH2 0x503 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x50B JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0x187 JUMPI DUP1 PUSH4 0x3644E515 GT PUSH2 0x156 JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x47D JUMPI DUP1 PUSH4 0x5909C0D5 EQ PUSH2 0x485 JUMPI DUP1 PUSH4 0x5A3D5493 EQ PUSH2 0x48D JUMPI DUP1 PUSH4 0x6A627842 EQ PUSH2 0x495 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x23B872DD EQ PUSH2 0x3E3 JUMPI DUP1 PUSH4 0x2EC2FE3D EQ PUSH2 0x426 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x457 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x45F JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x9F5D055 GT PUSH2 0x1C3 JUMPI DUP1 PUSH4 0x9F5D055 EQ PUSH2 0x2FA JUMPI DUP1 PUSH4 0x13AF4035 EQ PUSH2 0x314 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x349 JUMPI DUP1 PUSH4 0x1C6DA724 EQ PUSH2 0x351 JUMPI PUSH2 0x1E5 JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0x1EA JUMPI DUP1 PUSH4 0x902F1AC EQ PUSH2 0x267 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x2AD JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x1F2 PUSH2 0x764 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x22C JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x214 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x259 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x26F PUSH2 0x79D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP6 DUP7 AND DUP2 MSTORE SWAP4 SWAP1 SWAP5 AND PUSH1 0x20 DUP5 ADD MSTORE PUSH4 0xFFFFFFFF SWAP1 SWAP2 AND DUP3 DUP5 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x80 ADD SWAP1 RETURN JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2C3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7F6 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x80D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x32A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x813 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x302 PUSH2 0x8E0 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x367 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 CALLDATALOAD SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x20 DUP3 ADD CALLDATALOAD AND SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x1 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP SWAP1 SWAP3 POP SWAP1 POP PUSH2 0x8E6 JUMP JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x3F9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xF31 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x100A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x1026 JUMP JUMPDEST PUSH2 0x467 PUSH2 0x104A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x302 PUSH2 0x104F JUMP JUMPDEST PUSH2 0x302 PUSH2 0x1055 JUMP JUMPDEST PUSH2 0x302 PUSH2 0x105B JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1061 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1403 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x4E6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x141F JUMP JUMPDEST PUSH2 0x302 PUSH2 0x1431 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x521 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1437 JUMP JUMPDEST PUSH2 0x571 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x554 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x1449 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F2 PUSH2 0x18D5 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x5A8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x190E JUMP JUMPDEST PUSH2 0x2E6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x5C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1999 JUMP JUMPDEST PUSH2 0x302 PUSH2 0x19A6 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x606 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x19AC JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1B99 JUMP JUMPDEST PUSH2 0x42E PUSH2 0x1BB5 JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x649 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x1BD1 JUMP JUMPDEST PUSH2 0x302 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x6A7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x1E9D JUMP JUMPDEST PUSH2 0x347 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x6E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD DUP3 AND SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x80 ADD CALLDATALOAD PUSH2 0x1EBA JUMP JUMPDEST PUSH2 0x727 PUSH2 0x207C JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4665537761700000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x9 SLOAD PUSH1 0xD SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP4 AND SWAP4 PUSH15 0x10000000000000000000000000000 DUP5 DIV SWAP1 SWAP2 AND SWAP3 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV PUSH4 0xFFFFFFFF AND SWAP2 SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x803 CALLER DUP5 DUP5 PUSH2 0x226F JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0xD SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x899 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x6 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x957 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE DUP4 PUSH2 0x9B2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x22 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E92 PUSH1 0x22 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND DUP1 DUP7 LT PUSH2 0xA49 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x1E PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E53554646494349454E545F4C49515549444954590000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x0 SWAP2 DUP3 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP2 SWAP1 DUP2 AND SWAP1 DUP10 AND DUP3 EQ DUP1 ISZERO SWAP1 PUSH2 0xAAE JUMPI POP DUP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ ISZERO JUMPDEST PUSH2 0xB19 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x12 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F544F0000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB24 DUP2 DUP11 DUP13 PUSH2 0x22DE JUMP JUMPDEST DUP7 ISZERO PUSH2 0xBE8 JUMPI DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x387D768A CALLER DUP13 DUP12 DUP12 PUSH1 0x40 MLOAD DUP6 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP5 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP5 DUP5 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP6 POP POP POP POP POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBCF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0xBE3 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xC54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xC7E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP6 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xCF0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD04 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xD1A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP3 POP PUSH1 0x0 SWAP2 POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND DUP4 GT PUSH2 0xD41 JUMPI PUSH1 0x0 PUSH2 0xD55 JUMP JUMPDEST DUP5 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 GT PUSH2 0xD79 JUMPI PUSH1 0x0 PUSH2 0xD8F JUMP JUMPDEST DUP10 DUP6 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SUB DUP4 SUB JUMPDEST SWAP1 POP PUSH1 0x0 DUP3 GT DUP1 PUSH2 0xDA0 JUMPI POP PUSH1 0x0 DUP2 GT JUMPDEST PUSH2 0xDF5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x21 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E71 PUSH1 0x21 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH1 0x0 PUSH2 0xE17 PUSH2 0xE05 DUP4 PUSH1 0x3 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0xE11 DUP7 PUSH2 0x3E8 PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH2 0xE42 PUSH2 0x3E8 PUSH2 0xE3C PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 DUP2 AND SWAP1 DUP11 AND PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0xE4C DUP7 DUP4 PUSH2 0x24EB JUMP JUMPDEST LT ISZERO PUSH2 0xEB9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x9 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204B0000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xEC5 DUP6 DUP6 DUP10 DUP10 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP5 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP5 SWAP1 MSTORE DUP1 DUP3 ADD DUP14 SWAP1 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP13 AND SWAP2 CALLER SWAP2 PUSH32 0xFCFA612587D1091CC6D8CE39878A7E6E8742C856865FC9D64DB3E1A2F1AB52EF SWAP2 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 LOG3 POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0xFF5 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0xFC3 SWAP1 DUP4 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x1000 DUP5 DUP5 DUP5 PUSH2 0x2899 JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xA SLOAD DUP2 JUMP JUMPDEST PUSH1 0xB SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x10D4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x0 DUP1 PUSH2 0x10E4 PUSH2 0x79D JUMP JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP4 SWAP6 POP SWAP2 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x115F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1173 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1189 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP3 SWAP4 POP PUSH1 0x0 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1202 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1216 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x122C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 POP PUSH1 0x0 PUSH2 0x124C DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x126A DUP4 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND PUSH2 0x2571 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x1280 PUSH2 0x127B DUP5 DUP5 PUSH2 0x24EB JUMP JUMPDEST PUSH2 0x296E JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x128E DUP9 DUP9 PUSH2 0x29C0 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x12B9 JUMPI PUSH2 0x12A5 DUP4 PUSH2 0x3E8 PUSH2 0x2571 JUMP JUMPDEST SWAP10 POP PUSH2 0x12B4 PUSH1 0x0 PUSH2 0x3E8 PUSH2 0x2BFF JUMP JUMPDEST PUSH2 0x130A JUMP JUMPDEST PUSH2 0x1307 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x12D7 DUP8 DUP5 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x12DE JUMPI INVALID JUMPDEST DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP11 AND PUSH2 0x12FA DUP8 DUP6 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x1301 JUMPI INVALID JUMPDEST DIV PUSH2 0x2CA3 JUMP JUMPDEST SWAP10 POP JUMPDEST PUSH1 0x0 DUP11 GT PUSH2 0x1363 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2E4C PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x136D DUP12 DUP12 PUSH2 0x2BFF JUMP JUMPDEST PUSH2 0x1379 DUP8 DUP8 DUP12 DUP12 PUSH2 0x25E3 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x13B5 JUMPI PUSH1 0x9 SLOAD PUSH2 0x13B1 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x24EB JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP7 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP7 SWAP1 MSTORE DUP2 MLOAD CALLER SWAP3 PUSH32 0x4C209B5FC8AD50758F13E2E1088BA56A560DFF690A1C6FEF26394F4C03821C4F SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG2 POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP SWAP6 SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x7 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0xC SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x14BD JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x0 DUP1 PUSH2 0x14CD PUSH2 0x79D JUMP JUMPDEST POP POP PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP5 SWAP7 POP SWAP3 SWAP5 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 DUP3 AND SWAP4 SWAP2 AND SWAP2 PUSH1 0x0 SWAP2 DUP5 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1550 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1564 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x157A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP3 POP PUSH1 0x0 SWAP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x15EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1602 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1618 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD ADDRESS PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD SWAP2 SWAP3 POP PUSH2 0x1637 DUP9 DUP9 PUSH2 0x29C0 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 SWAP2 POP DUP1 PUSH2 0x1648 DUP5 DUP8 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x164F JUMPI INVALID JUMPDEST DIV SWAP11 POP DUP1 PUSH2 0x165D DUP5 DUP7 PUSH2 0x24EB JUMP JUMPDEST DUP2 PUSH2 0x1664 JUMPI INVALID JUMPDEST DIV SWAP10 POP PUSH1 0x0 DUP12 GT DUP1 ISZERO PUSH2 0x1677 JUMPI POP PUSH1 0x0 DUP11 GT JUMPDEST PUSH2 0x16CC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE PUSH1 0x25 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH2 0x2EB4 PUSH1 0x25 SWAP2 CODECOPY PUSH1 0x40 ADD SWAP2 POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH2 0x16D6 ADDRESS DUP5 PUSH2 0x2CBB JUMP JUMPDEST PUSH2 0x16E1 DUP8 DUP14 DUP14 PUSH2 0x22DE JUMP JUMPDEST PUSH2 0x16EC DUP7 DUP14 DUP13 PUSH2 0x22DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1758 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x176C JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1782 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD SWAP2 SWAP7 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x17F4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1808 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x181E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP4 POP PUSH2 0x182E DUP6 DUP6 DUP12 DUP12 PUSH2 0x25E3 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x186A JUMPI PUSH1 0x9 SLOAD PUSH2 0x1866 SWAP1 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP3 AND SWAP2 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND PUSH2 0x24EB JUMP JUMPDEST PUSH1 0xC SSTORE JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP13 DUP2 MSTORE PUSH1 0x20 DUP2 ADD DUP13 SWAP1 MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP16 AND SWAP3 CALLER SWAP3 PUSH32 0xDCCD412F0B1252819CB1FD330B93224CA42612892BB3F4F789976E6D81936496 SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP POP POP POP POP POP POP PUSH1 0x5A PUSH1 0xE DUP2 SWAP1 SSTORE POP SWAP2 POP SWAP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4645535000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1994 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0xD SSTORE JUMP JUMPDEST PUSH1 0x0 PUSH2 0x803 CALLER DUP5 DUP5 PUSH2 0x2899 JUMP JUMPDEST PUSH2 0x3E8 DUP2 JUMP JUMPDEST PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x1A1D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x7 SLOAD PUSH1 0x8 SLOAD PUSH1 0x9 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND SWAP5 SWAP1 SWAP4 AND SWAP3 PUSH2 0x1AF3 SWAP3 DUP6 SWAP3 DUP8 SWAP3 PUSH2 0x1AEE SWAP3 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 DUP6 SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1AD0 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1AE6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD SWAP1 PUSH2 0x2571 JUMP JUMPDEST PUSH2 0x22DE JUMP JUMPDEST PUSH2 0x1B8F DUP2 DUP5 PUSH2 0x1AEE PUSH1 0x9 PUSH1 0xE SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 ADDRESS PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP POP PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1ABC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP PUSH1 0x5A PUSH1 0xE SSTORE POP JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST PUSH1 0x8 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x1C40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20455850495245440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DA1 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x1E1C JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x1E87 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F5349474E415455524500000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x1E92 DUP10 DUP10 DUP10 PUSH2 0x226F JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND CALLER EQ PUSH2 0x1F40 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20464F5242494444454E000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x7 DUP1 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP9 AND PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000000000000000 SWAP3 DUP4 AND OR SWAP1 SWAP3 SSTORE PUSH1 0x8 DUP1 SLOAD DUP8 DUP5 AND SWAP1 DUP4 AND OR SWAP1 SSTORE PUSH1 0x6 DUP1 SLOAD SWAP3 DUP7 AND SWAP3 SWAP1 SWAP2 AND SWAP2 SWAP1 SWAP2 OR SWAP1 SSTORE DUP1 ISZERO PUSH2 0x1FAE JUMPI PUSH1 0xD DUP2 SWAP1 SSTORE JUMPDEST PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x95EA7B300000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x4 DUP4 ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH1 0x24 DUP4 ADD MSTORE SWAP2 MLOAD SWAP2 SWAP1 SWAP3 AND SWAP2 PUSH4 0x95EA7B3 SWAP2 PUSH1 0x44 DUP1 DUP4 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2049 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x205D JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2073 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0xE SLOAD PUSH1 0x5A EQ PUSH2 0x20F0 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xE PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204C4F434B4544000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP PUSH1 0x69 PUSH1 0xE SSTORE PUSH1 0x9 SLOAD PUSH1 0x7 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND SWAP5 PUSH15 0x10000000000000000000000000000 SWAP1 DIV AND SWAP3 PUSH2 0x2266 SWAP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP2 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2196 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x21AA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x21C0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x8 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE ADDRESS PUSH1 0x4 DUP3 ADD MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP3 AND SWAP2 PUSH4 0x70A08231 SWAP2 PUSH1 0x24 DUP1 DUP3 ADD SWAP3 PUSH1 0x20 SWAP3 SWAP1 SWAP2 SWAP1 DUP3 SWAP1 SUB ADD DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2233 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2247 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x225D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD DUP5 DUP5 PUSH2 0x25E3 JUMP JUMPDEST PUSH1 0x5A PUSH1 0xE SSTORE SWAP1 SWAP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x19 DUP2 MSTORE PUSH32 0x7472616E7366657228616464726573732C75696E743235362900000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 DUP2 AND PUSH1 0x24 DUP4 ADD MSTORE PUSH1 0x44 DUP1 DUP4 ADD DUP7 SWAP1 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0x64 SWAP1 SWAP3 ADD DUP5 MSTORE SWAP2 DUP2 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 OR DUP2 MSTORE SWAP3 MLOAD DUP2 MLOAD PUSH1 0x0 SWAP5 PUSH1 0x60 SWAP5 DUP10 AND SWAP4 SWAP3 SWAP2 DUP3 SWAP2 SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x23E4 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x23A7 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x2446 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x244B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x2479 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x2479 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x2476 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD JUMPDEST PUSH2 0x24E4 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x17 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A205452414E534645525F4641494C4544000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x2506 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x2503 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 GT DUP1 ISZERO SWAP1 PUSH2 0x260F JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 GT ISZERO JUMPDEST PUSH2 0x267A JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x10 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A204F564552464C4F5700000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x9 SLOAD PUSH4 0xFFFFFFFF TIMESTAMP DUP2 AND SWAP2 PUSH29 0x100000000000000000000000000000000000000000000000000000000 SWAP1 DIV DUP2 AND DUP3 SUB SWAP1 DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x26CA JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND ISZERO ISZERO JUMPDEST DUP1 ISZERO PUSH2 0x26E5 JUMPI POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x278F JUMPI DUP1 PUSH4 0xFFFFFFFF AND PUSH2 0x2722 DUP6 PUSH2 0x26FE DUP7 PUSH2 0x2D74 JUMP JUMPDEST PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP1 PUSH2 0x2D98 JUMP JUMPDEST PUSH1 0xA DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE PUSH4 0xFFFFFFFF DUP2 AND PUSH2 0x2762 DUP5 PUSH2 0x26FE DUP8 PUSH2 0x2D74 JUMP JUMPDEST PUSH1 0xB DUP1 SLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND SWAP3 SWAP1 SWAP3 MUL ADD SWAP1 SSTORE JUMPDEST PUSH1 0x9 DUP1 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF0000000000000000000000000000 AND PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP9 DUP2 AND SWAP2 SWAP1 SWAP2 OR PUSH32 0xFFFFFFFF0000000000000000000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 DUP9 DUP4 AND DUP2 MUL SWAP2 SWAP1 SWAP2 OR PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH29 0x100000000000000000000000000000000000000000000000000000000 PUSH4 0xFFFFFFFF DUP8 AND MUL OR SWAP3 DUP4 SWAP1 SSTORE PUSH1 0x40 DUP1 MLOAD DUP5 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP4 DIV SWAP1 SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x1C411E9A96E071241C2F21F7726B17AE89E3CAB4C78BE50E062B03A9FFFBBAD1 SWAP3 SWAP2 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG1 POP POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x28C9 SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0x2905 SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x29B1 JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x29AB JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x299A JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x29A3 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x2983 JUMP JUMPDEST POP PUSH2 0x29BB JUMP JUMPDEST DUP2 ISZERO PUSH2 0x29BB JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x5 PUSH1 0x0 SWAP1 SLOAD SWAP1 PUSH2 0x100 EXP SWAP1 DIV PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH3 0x2EAB7 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2A3F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2A55 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 POP SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND ISZERO ISZERO DUP1 PUSH2 0x2A9E JUMPI POP PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST PUSH1 0xC SLOAD SWAP1 SWAP4 POP DUP4 ISZERO PUSH2 0x2BEA JUMPI DUP1 ISZERO PUSH2 0x2BE5 JUMPI PUSH1 0x0 PUSH2 0x2AD2 PUSH2 0x127B PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 DUP2 AND SWAP1 DUP10 AND PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2ADF DUP4 PUSH2 0x296E JUMP JUMPDEST SWAP1 POP PUSH2 0x2AEC DUP2 PUSH1 0x14 PUSH2 0x2DD9 JUMP JUMPDEST DUP3 GT ISZERO PUSH2 0x2BE2 JUMPI PUSH1 0x0 PUSH2 0x2B10 PUSH1 0x6 PUSH2 0xE3C PUSH2 0x2B07 DUP7 DUP7 PUSH2 0x2571 JUMP JUMPDEST PUSH1 0x0 SLOAD SWAP1 PUSH2 0x24EB JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B28 DUP4 PUSH2 0x2B22 DUP7 DUP10 PUSH2 0x24EB JUMP JUMPDEST SWAP1 PUSH2 0x2DD9 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x2B37 DUP3 PUSH1 0xA PUSH2 0x24EB JUMP JUMPDEST DUP4 DUP2 PUSH2 0x2B3F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x2B69 JUMPI POP PUSH1 0x6 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2B91 JUMPI PUSH1 0x6 SLOAD PUSH2 0x2B91 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP3 PUSH2 0x2BFF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2B9E DUP4 PUSH1 0xF PUSH2 0x24EB JUMP JUMPDEST DUP5 DUP2 PUSH2 0x2BA6 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 DUP2 GT DUP1 ISZERO PUSH2 0x2BCE JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP10 AND ISZERO ISZERO JUMPDEST ISZERO PUSH2 0x2BDD JUMPI PUSH2 0x2BDD DUP10 DUP3 PUSH2 0x2BFF JUMP JUMPDEST POP POP POP POP JUMPDEST POP POP JUMPDEST PUSH2 0x2BF6 JUMP JUMPDEST DUP1 ISZERO PUSH2 0x2BF6 JUMPI PUSH1 0x0 PUSH1 0xC SSTORE JUMPDEST POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD PUSH2 0x2C0C SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2C3E SWAP1 DUP3 PUSH2 0x2DD9 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x2CB2 JUMPI DUP2 PUSH2 0x2CB4 JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0x2CEB SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0x2D1F SWAP1 DUP3 PUSH2 0x2571 JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH15 0x10000000000000000000000000000 MUL SWAP1 JUMP JUMPDEST PUSH1 0x0 PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND DUP2 PUSH2 0x2DD1 JUMPI INVALID JUMPDEST DIV SWAP4 SWAP3 POP POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x807 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F 0x4D 0x49 0x4E SLOAD GASLIMIT DIFFICULTY CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x49 0x4E POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4F SSTORE SLOAD POP SSTORE SLOAD 0x5F COINBASE 0x4D 0x4F SSTORE 0x4E SLOAD CHAINID PUSH6 0x537761703A20 0x49 0x4E MSTORE8 SSTORE CHAINID CHAINID 0x49 NUMBER 0x49 GASLIMIT 0x4E SLOAD 0x5F 0x4C 0x49 MLOAD SSTORE 0x49 DIFFICULTY 0x49 SLOAD MSIZE 0x5F TIMESTAMP SSTORE MSTORE 0x4E GASLIMIT DIFFICULTY LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xF9 BYTE MULMOD MOD RETURN DUP14 OR 0xC1 0xD9 0xE8 0xBC 0x2F PUSH20 0x99930D121217FA2ACEE35DB092A20C4D49AF1964 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
          "sourceMap": "325:11818:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:47:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1644:395:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:156:0;;;;;;;;;;;;;;;;-1:-1:-1;2345:156:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1409:41:2;;;:::i;:::-;;;;;;;;;;;;;;;;3669:159;;;;;;;;;;;;;;;;-1:-1:-1;3669:159:2;;;;:::i;:::-;;379:33:0;;;:::i;9675:1723:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:1723:2;;-1:-1:-1;9675:1723:2;-1:-1:-1;9675:1723:2;:::i;2665:310:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2665:310:0;;;;;;;;;;;;;;;;;;:::i;755:33:2:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;707:117:0;;;:::i;328:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;555:40;;;:::i;1183:41:2:-;;;:::i;1231:::-;;;:::i;6537:1383::-;;;;;;;;;;;;;;;;-1:-1:-1;6537:1383:2;;;;:::i;799:31::-;;;:::i;419:50:0:-;;;;;;;;;;;;;;;;-1:-1:-1;419:50:0;;;;:::i;1279:26:2:-;;;:::i;831:47:0:-;;;;;;;;;;;;;;;;-1:-1:-1;831:47:0;;;;:::i;8032:1531:2:-;;;;;;;;;;;;;;;;-1:-1:-1;8032:1531:2;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;274:47:0;;;:::i;3836:172:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3836:172:2;;:::i;2509:148:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2509:148:0;;;;;;;;;:::i;447:55:2:-;;;:::i;11447:358::-;;;;;;;;;;;;;;;;-1:-1:-1;11447:358:2;;;;:::i;717:31::-;;;:::i;837:32::-;;;:::i;2983:677:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2983:677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;476:70::-;;;;;;;;;;;;;;;;-1:-1:-1;476:70:0;;;;;;;;;;;:::i;3173:488:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3173:488:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11854:286::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:47:0;;;;;;;;;;;;;;;;;;;:::o;1644:395:2:-;1879:9;;2009:20;;1879:9;;;;;1913:10;;;;;;;1956:18;;;;;;2009:20;1644:395::o;2345:156:0:-;2418:4;2435:36;2444:10;2456:7;2465:5;2435:8;:36::i;:::-;-1:-1:-1;2489:4:0;2345:156;;;;;:::o;1409:41:2:-;;;;:::o;3669:159::-;3758:7;;;;3744:10;:21;3736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3798:9;:22;;;;;;;;;;;;;;;3669:159::o;379:33:0:-;;;;:::o;9675:1723:2:-;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:4;1575:8;:15;9780:13;9772:60:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9888:9;::::0;::::1;::::0;;::::1;::::0;9899:10;;::::1;;9951:23:::0;;::::1;9943:66;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10196:7;::::0;10205:8:::1;::::0;10022:14:::1;::::0;;;10196:7:::1;::::0;;::::1;::::0;10205:8;;::::1;::::0;10263:14;::::1;::::0;::::1;::::0;::::1;::::0;:33:::1;;;10287:9;10281:15;;:2;:15;;;;10263:33;10255:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10334:39;10348:9;10359:2;10363:9;10334:13;:39::i;:::-;10393:15:::0;;10389:78:::1;;10424:2;10410:28;;;10439:10;10451:9;10462:4;;10410:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10389:78;10494:41;::::0;;;;;10529:4:::1;10494:41;::::0;::::1;::::0;;;:26:::1;::::0;::::1;::::0;::::1;::::0;:41;;;;;::::1;::::0;;;;;;;;:26;:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;10494:41:2;10563:42:::1;::::0;;;;;10599:4:::1;10563:42;::::0;::::1;::::0;;;10494:41;;-1:-1:-1;10563:27:2::1;::::0;::::1;::::0;::::1;::::0;:42;;;;;10494:41:::1;::::0;10563:42;;;;;;;;:27;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;10563:42:2;;-1:-1:-1;10629:20:2::1;::::0;-1:-1:-1;;10652:22:2::1;::::0;::::1;::::0;::::1;:51;;10702:1;10652:51;;;10689:10;10677:22;;:9;:22;10652:51;10629:74;;10714:21;10766:9;10752:11;:23;;;10738:10;:38;:128;;10865:1;10738:128;;;10852:9;10838:11;:23;;;10824:10;:38;10738:128;10714:152;;10929:1;10911:15;:19;:43;;;;10953:1;10934:16;:20;10911:43;10903:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11005:23;11031:49;11056:23;:16:::0;11077:1:::1;11056:20;:23::i;:::-;11031:20;:10:::0;11046:4:::1;11031:14;:20::i;:::-;:24:::0;::::1;:49::i;:::-;11005:75:::0;-1:-1:-1;11183:43:2::1;11221:4;11183:33;;:16:::0;;::::1;::::0;:33;::::1;:20;:33::i;:::-;:37:::0;::::1;:43::i;:::-;11146:33;:9:::0;11160:18;11146:13:::1;:33::i;:::-;:80;;11138:102;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;11253:55;11261:9;11272:10;11284;11296:11;11253:7;:55::i;:::-;11324:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;::::1;::::0;11329:10:::1;::::0;11324:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;1624:4:2;1613:8;:15;-1:-1:-1;;;;;;;;;9675:1723:2:o;2665:310:0:-;2773:15;;;2752:4;2773:15;;;:9;:15;;;;;;;;2789:10;2773:27;;;;;;;;2809:2;2773:39;2769:140;;2859:15;;;;;;;:9;:15;;;;;;;;2875:10;2859:27;;;;;;;;:38;;2891:5;2859:31;:38::i;:::-;2829:15;;;;;;;:9;:15;;;;;;;;2845:10;2829:27;;;;;;;:68;2769:140;2919:26;2929:4;2935:2;2939:5;2919:9;:26::i;:::-;-1:-1:-1;2963:4:0;2665:310;;;;;:::o;755:33:2:-;;;;;;:::o;707:117:0:-;758:66;707:117;:::o;328:44::-;370:2;328:44;:::o;555:40::-;;;;:::o;1183:41:2:-;;;;:::o;1231:::-;;;;:::o;6537:1383::-;6595:14;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:4;1575:8;:15;6623:18:::1;::::0;6669:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;6732:7:2::1;::::0;6725:40:::1;::::0;;;;;6759:4:::1;6725:40;::::0;::::1;::::0;;;6622:60;;-1:-1:-1;6622:60:2;;-1:-1:-1;6708:14:2::1;::::0;6732:7:::1;::::0;;::::1;::::0;6725:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;6732:7;6725:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6725:40:2;6801:8:::1;::::0;6794:41:::1;::::0;;;;;6829:4:::1;6794:41;::::0;::::1;::::0;;;6725:40;;-1:-1:-1;6776:15:2::1;::::0;6801:8:::1;::::0;;::::1;::::0;6794:26:::1;::::0;:41;;;;;6725:40:::1;::::0;6794:41;;;;;;;;6801:8;6794:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6794:41:2;;-1:-1:-1;6846:18:2::1;6867:25;:9:::0;:25:::1;::::0;::::1;:13;:25::i;:::-;6846:46:::0;-1:-1:-1;6903:19:2::1;6925:27;:10:::0;:27:::1;::::0;::::1;:14;:27::i;:::-;6903:49:::0;-1:-1:-1;6963:12:2::1;6978:44;6988:33;:13:::0;6903:49;6988:17:::1;:33::i;:::-;6978:9;:44::i;:::-;6963:59;;7035:10;7048:33;7057:10;7069:11;7048:8;:33::i;:::-;7092:17;7112:11:::0;7035:46;;-1:-1:-1;7216:17:2;7212:345:::1;;7262:30;:7:::0;497:5:::1;7262:11;:30::i;:::-;7250:42;;7307:36;7321:1;497:5;7307;:36::i;:::-;7212:345;;;7443:102;7452:44;::::0;::::1;:31;:13:::0;7470:12;7452:17:::1;:31::i;:::-;:44;;;;;;7498:46;::::0;::::1;:32;:14:::0;7517:12;7498:18:::1;:32::i;:::-;:46;;;;;;7443:8;:102::i;:::-;7431:114;;7212:345;7587:1;7575:9;:13;7567:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7641:20;7647:2;7651:9;7641:5;:20::i;:::-;7674:55;7682:9;7693:10;7705;7717:11;7674:7;:55::i;:::-;7744:5;7740:50;;;7779:10;::::0;7759:31:::1;::::0;7779:10:::1;7764:9:::0;;::::1;::::0;7779:10;;::::1;;7759:19;:31::i;:::-;7751:5;:39:::0;7740:50:::1;7865:47;::::0;;;;;::::1;::::0;::::1;::::0;;;;;7870:10:::1;::::0;7865:47:::1;::::0;;;;;;::::1;-1:-1:-1::0;;1624:4:2;1613:8;:15;-1:-1:-1;6537:1383:2;;;-1:-1:-1;;;;;;;6537:1383:2:o;799:31::-;;;;;;:::o;419:50:0:-;;;;;;;;;;;;;:::o;1279:26:2:-;;;;:::o;831:47:0:-;;;;;;;;;;;;;:::o;8032:1531:2:-;8090:13;8105:14;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:4;1575:8;:15;8133:18:::1;::::0;8179:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;8263:7:2::1;::::0;8272:8:::1;::::0;8327:41:::1;::::0;;;;;8362:4:::1;8327:41;::::0;::::1;::::0;;;8132:60;;-1:-1:-1;8132:60:2;;-1:-1:-1;8263:7:2::1;::::0;;::::1;::::0;8272:8;::::1;::::0;8223:16:::1;::::0;8263:7;;8327:26:::1;::::0;:41;;;;;::::1;::::0;;;;;;;;8263:7;8327:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8327:41:2;8397:42:::1;::::0;;;;;8433:4:::1;8397:42;::::0;::::1;::::0;;;8327:41;;-1:-1:-1;8379:15:2::1;::::0;8397:27:::1;::::0;::::1;::::0;::::1;::::0;:42;;;;;8327:41:::1;::::0;8397:42;;;;;;;:27;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8397:42:2;8485:4:::1;8450:14;8467:24:::0;;;:9:::1;8397:42;8467:24:::0;;;;;8397:42;;-1:-1:-1;8561:33:2::1;8570:10:::0;8582:11;8561:8:::1;:33::i;:::-;8605:17;8625:11:::0;8548:46;;-1:-1:-1;8625:11:2;8759:24:::1;:9:::0;8773;8759:13:::1;:24::i;:::-;:39;;;;;;::::0;-1:-1:-1;8901:12:2;8873:25:::1;:9:::0;8887:10;8873:13:::1;:25::i;:::-;:40;;;;;;8861:52;;8993:1;8982:8;:12;:29;;;;;9010:1;8998:9;:13;8982:29;8974:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9066:31;9080:4;9087:9;9066:5;:31::i;:::-;9108:37;9122:8;9132:2;9136:8;9108:13;:37::i;:::-;9156:39;9170:9;9181:2;9185:9;9156:13;:39::i;:::-;9218:41;::::0;;;;;9253:4:::1;9218:41;::::0;::::1;::::0;;;:26:::1;::::0;::::1;::::0;::::1;::::0;:41;;;;;::::1;::::0;;;;;;;;:26;:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9218:41:2;9283:42:::1;::::0;;;;;9319:4:::1;9283:42;::::0;::::1;::::0;;;9218:41;;-1:-1:-1;9283:27:2::1;::::0;::::1;::::0;::::1;::::0;:42;;;;;9218:41:::1;::::0;9283:42;;;;;;;;:27;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9283:42:2;;-1:-1:-1;9338:55:2::1;9346:9:::0;9283:42;9369:10;9381:11;9338:7:::1;:55::i;:::-;9408:5;9404:50;;;9443:10;::::0;9423:31:::1;::::0;9443:10:::1;9428:9:::0;;::::1;::::0;9443:10;;::::1;;9423:19;:31::i;:::-;9415:5;:39:::0;9404:50:::1;9514:41;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;9519:10:::1;::::0;9514:41:::1;::::0;;;;;;;;;::::1;1601:1;;;;;;;;;1624:4:::0;1613:8;:15;;;;8032:1531;;;:::o;274:47:0:-;;;;;;;;;;;;;;;;;;;:::o;3836:172:2:-;3930:7;;;;3916:10;:21;3908:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:30;3836:172::o;2509:148:0:-;2578:4;2595:32;2605:10;2617:2;2621:5;2595:9;:32::i;447:55:2:-;497:5;447:55;:::o;11447:358::-;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:4;1575:8;:15;11526:7:::1;::::0;11579:8:::1;::::0;11687:9:::1;::::0;11641:41:::1;::::0;;;;;11676:4:::1;11641:41;::::0;::::1;::::0;;;11526:7:::1;::::0;;::::1;::::0;11579:8;;::::1;::::0;11613:85:::1;::::0;11526:7;;11637:2;;11641:56:::1;::::0;11687:9:::1;;::::0;11526:7;;11641:26:::1;::::0;:41;;;;;::::1;::::0;;;;;;;;;11526:7;11641:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11641:41:2;;:45:::1;:56::i;:::-;11613:13;:85::i;:::-;11709:88;11723:9;11734:2;11738:58;11785:10;;;;;;;;;;;11738:58;;11745:9;11738:27;;;11774:4;11738:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;11709:88;-1:-1:-1::0;;1624:4:2;1613:8;:15;-1:-1:-1;11447:358:2:o;717:31::-;;;;;;:::o;837:32::-;;;;;;:::o;2983:677:0:-;3138:15;3126:8;:27;;3118:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3289:16;;3385:13;;;;3184:14;3385:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3334:77;;758:66;3334:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3324:88;;;;;;3225:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:237;;;;;;;;;3476:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3184:14;;3385:15;3476:26;;;;;-1:-1:-1;3476:26:0;;;;;;;;;;3385:15;3476:26;;;;;;;;;;;;;;;-1:-1:-1;;3476:26:0;;;;;;-1:-1:-1;;3521:30:0;;;;;;;:59;;;3575:5;3555:25;;:16;:25;;;3521:59;3513:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3621:31;3630:5;3637:7;3646:5;3621:8;:31::i;:::-;2983:677;;;;;;;;;:::o;476:70::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;3173:488:2:-;3335:7;;;;3321:10;:21;3313:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3375:7;:22;;;;;;;;;;;;;;3408:8;:23;;;;;;;;;;;3442:9;:24;;;;;;;;;;;;;;;3480:16;;3477:56;;3499:20;:34;;;3477:56;3551:7;;3544:41;;;;;;3551:7;3544:41;;;;;;;3581:2;3544:41;;;;;;3551:7;;;;;3544:23;;:41;;;;;;;;;;;;;;3551:7;;3544:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;3173:488:2:o;11854:286::-;11901:18;11921:19;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1586:4:2;1575:8;:15;11982:9:::1;::::0;12030:7:::1;::::0;12023:40:::1;::::0;;;;;12057:4:::1;12023:40;::::0;::::1;::::0;;;11982:9:::1;::::0;;::::1;::::0;11993:10;;::::1;;::::0;12015:117:::1;::::0;12030:7:::1;::::0;;::::1;::::0;12023:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;;12030:7;12023:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12023:40:2;12072:8:::1;::::0;12065:41:::1;::::0;;;;;12100:4:::1;12065:41;::::0;::::1;::::0;;;12072:8:::1;::::0;;::::1;::::0;12065:26:::1;::::0;:41;;;;;12023:40:::1;::::0;12065:41;;;;;;;;12072:8;12065:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12065:41:2;12108:10;12120:11;12015:7:::1;:117::i;:::-;1624:4:::0;1613:8;:15;11854:286;;:::o;1939:169:0:-;2020:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2069:31;;;;;;;;;;;;;;;;;1939:169;;;:::o;2047:284:2:-;561:34;;;;;;;;;;;;;;;;;2175:43;;2164:10;2175:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2164:55;;;;2129:12;;2143:17;;2164:10;;;2175:43;2164:55;;;2175:43;2164:55;;2175:43;2164:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2128:91;;;;2238:7;:57;;;;-1:-1:-1;2250:11:2;;:16;;:44;;;2281:4;2270:24;;;;;;;;;;;;;;;-1:-1:-1;2270:24:2;2250:44;2230:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:284;;;;;:::o;470:142:17:-;522:6;549;;;:30;;-1:-1:-1;;564:5:17;;;578:1;573;564:5;573:1;559:15;;;;;:20;549:30;541:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;333:129;417:5;;;412:16;;;;404:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4095:884:2;4213:24;;;;;;:53;;-1:-1:-1;4241:25:2;;;;4213:53;4205:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4402:18;;4329:23;:15;:23;;;4402:18;;;;;4385:35;;;4458:15;;;;;;:34;;-1:-1:-1;4477:15:2;;;;;4458:34;:54;;;;-1:-1:-1;4496:16:2;;;;;4458:54;4454:345;;;4670:11;4614:67;;4619:47;4655:10;4619:29;4636:11;4619:16;:29::i;:::-;:35;;;;:47::i;:::-;4590:20;:91;;4614:53;;;;;:67;;;;4590:91;;;4720:67;;;4725:47;4760:11;4725:28;4742:10;4725:16;:28::i;:47::-;4696:20;:91;;4720:53;;;;;:67;;;;4696:91;;;4454:345;4809:9;:30;;;;;;;;;;;;4850:32;;;;;;;;;;;;4893:35;;;;;;;;;;;;4944:27;;;4949:9;;;4944:27;;4960:10;;;;;;;4944:27;;;;;;;;;;;;;;;;;4095:884;;;;;;:::o;2116:221:0:-;2211:15;;;;;;;:9;:15;;;;;;:26;;2231:5;2211:19;:26::i;:::-;2193:15;;;;;;;;:9;:15;;;;;;:44;;;;2264:13;;;;;;;:24;;2282:5;2264:17;:24::i;:::-;2248:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2304:25;;;;;;;2248:13;;2304:25;;;;;;;;;;;;;2116:221;;;:::o;354:303:16:-;399:6;426:1;422;:5;418:232;;;-1:-1:-1;448:1:16;481;477;473:5;;:9;497:92;508:1;504;:5;497:92;;;534:1;530:5;;572:1;567;563;559;:5;;;;;;:9;558:15;;;;;;554:19;;497:92;;;418:232;;;;610:6;;606:44;;-1:-1:-1;637:1:16;606:44;354:303;;;:::o;5069:1356:2:-;5145:10;5169:13;5184:20;5223:7;;;;;;;;;;;5208:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5208:36:2;;;;;;;;;-1:-1:-1;5208:36:2;-1:-1:-1;5264:19:2;;;;;;5263:50;;-1:-1:-1;5289:9:2;;:23;:9;:23;;5263:50;5338:5;;5255:58;;-1:-1:-1;5380:1026:2;;;;5410:11;;5406:930;;5442:10;5455:44;5465:33;;:16;;;;:33;;:20;:33::i;5455:44::-;5442:57;;5518:14;5535:17;5545:6;5535:9;:17::i;:::-;5518:34;-1:-1:-1;5583:17:2;5518:34;5597:2;5583:13;:17::i;:::-;5575:5;:25;5571:750;;;5679:14;5696:44;5738:1;5696:37;5712:20;:5;5722:9;5712;:20::i;:::-;5696:11;;;:15;:37::i;:44::-;5679:61;-1:-1:-1;5763:16:2;5782:41;5813:9;5782:26;:5;5792:15;5782:9;:26::i;:::-;:30;;:41::i;:::-;5763:60;-1:-1:-1;5846:21:2;5883:19;5763:60;5899:2;5883:15;:19::i;:::-;5870:9;:33;;;;;;5846:57;;5949:1;5930:16;:20;5929:51;;;;-1:-1:-1;5956:9:2;;:23;:9;:23;;5929:51;5926:141;;;6015:9;;6009:34;;6015:9;;6026:16;6009:5;:34::i;:::-;6090:20;6126:19;:11;6142:2;6126:15;:19::i;:::-;6113:9;:33;;;;;;6090:56;;6191:1;6173:15;:19;6172:47;;;;-1:-1:-1;6199:19:2;;;;;6172:47;6169:132;;;6248:29;6254:5;6261:15;6248:5;:29::i;:::-;5571:750;;;;;5406:930;;;5380:1026;;;6357:11;;6353:53;;6393:1;6385:5;:9;6353:53;5069:1356;;;;;;;:::o;1513:201:0:-;1586:11;;:22;;1602:5;1586:15;:22::i;:::-;1572:11;:36;;;1635:13;;;;;:9;:13;;;;;;:24;;1653:5;1635:17;:24::i;:::-;1619:13;;;;;;;:9;:13;;;;;;;;:40;;;;1675:31;;;;;;;1619:13;;;;1675:31;;;;;;;;;;1513:201;;:::o;140:96:16:-;192:6;219:1;215;:5;:13;;227:1;215:13;;;223:1;215:13;211:17;140:96;-1:-1:-1;;;140:96:16:o;1722:209:0:-;1801:15;;;;;;;:9;:15;;;;;;:26;;1821:5;1801:19;:26::i;:::-;1783:15;;;;;;;:9;:15;;;;;:44;;;;1852:11;:22;;1868:5;1852:15;:22::i;:::-;1838:11;:36;;;1890:33;;;;;;;;;;;;;;;;;;;;;;1722:209;;:::o;331:120:19:-;407:10;;276:6;407:17;;331:120::o;522:108::-;582:9;612:10;;;608:14;;;612:10;608:14;;;;;;522:108;-1:-1:-1;;;522:108:19:o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserveIn\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserveOut\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"}],\"name\":\"adjusArbitragetRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserveIn\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserveOut\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_rateTriggerArbitrage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_tokenIn\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_tokenOut\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_pairOwner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rateTrigger\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateTriggerArbitrage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pairOwner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserveIn\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserveOut\",\"type\":\"uint112\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenIn\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenOut\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FeSwapPair.sol\":\"FeSwapPair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeSwapERC20.sol\":{\"keccak256\":\"0xbf63cdbef80c105090a8ccfcf292e2932bd6b22ca661dc4fc9b9de855c327f02\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://50cf9770bc6279400f3eb0b27a20fad862be24af16f13efd9515f423557eefdc\",\"dweb:/ipfs/QmZz7dA3QVsVykNnt3kMyNvnnqybftPktbVGAsPf34bY8w\"]},\"contracts/FeSwapPair.sol\":{\"keccak256\":\"0x1a91464a15cdbcec19f57b5535365ab25892bf0742f19605f11bdaaa0e5fb71c\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://ed562b8083aaca01edca765d3c063d790d8e3be2dfa45254b4d1669a9196d021\",\"dweb:/ipfs/QmUR42S1dkPdLLGJRLFFefEb6r7Fj3HdpEhTgzavPUTiz2\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xffa99694f4e4032bb172355a8a945673f2b478dd8beaae2924be031d508840e6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a4797ac84843f2e7390441a1e906f99ae88470b85dbc33986d2b157cbafb879a\",\"dweb:/ipfs/QmSQcCyUgUfwSkqyu9aAAw8LcRjcMFYv7omtYfUWkYKXKQ\"]},\"contracts/interfaces/IFeSwapCallee.sol\":{\"keccak256\":\"0x8da1282693196e0e9b909c0b4f4b420754f1dbd433a4f455078bb8b8cc331a0b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f4f2e06a02707f6a72b489af5eb5b6bc32130319f936cc1b3b3b1980fb07e280\",\"dweb:/ipfs/QmZ9yddVbCHY2rknF8QNTB9z2zYHkvbmnaShVf4K4hnpqL\"]},\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]},\"contracts/interfaces/IFeSwapFactory.sol\":{\"keccak256\":\"0x6380263efaf08b4bbb55a8441149baa7e350cfb7ef2ab4d7d1b9459048e47d64\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ed8209bcab83952ee61eead083e52e6396b6c8e9b4aa1c4e382f93bef60039d\",\"dweb:/ipfs/QmQuszK4Sw3NKZqvkhN6WYcjmgzzgegvY8a4joxEsJykye\"]},\"contracts/interfaces/IFeSwapPair.sol\":{\"keccak256\":\"0x480046bc17bd6578c1943d7b487ed45183c581625b8abed2b97a48db1220c1d0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3dc34bc6ffcb16588ecd57a6fbe28595f6e2eda02ca13c6864708477bce9afcc\",\"dweb:/ipfs/QmVrkT7MXCc3SqrHaVb1arfndaJGfPeve4Q57Lc34xCChj\"]},\"contracts/libraries/Math.sol\":{\"keccak256\":\"0x0633fc66085fcd3edb82ac6b16838dbfd1582b0299676c2889ff9adae956b8ca\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0b3f837831263e99a9e51c5f3dbe8b6bb77f8bbd611df3554aa8051f0916e030\",\"dweb:/ipfs/QmdYuTL39Ey484BEedoMLfRuhHHLGK4i9gEGzeH8jC2Ji1\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xf04a5109c9205c67202d408fdf6ce80ec28fcd93702bdba158d88aae5a6573ad\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ee35c811f41747d96f6946388815e9bf4d6c72dd3ddec7f1de3815979f3f415\",\"dweb:/ipfs/QmZFQ9oBd3DyZbzNf7eTesDxjNxyzpyPcxSC8w9RVRpNPM\"]},\"contracts/libraries/UQ112x112.sol\":{\"keccak256\":\"0xc74700f2fa4a4396b83cafb9bc9776eb0c212da6af3f05287b690c14a5246dc1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://da90a3b6d524567a221aac08958011a3924c85b22d52f67a65ce3015478fe19c\",\"dweb:/ipfs/QmcuYJZMRA79gVFGh9Nr89VzvKXgvUAGKaY1nDvoFxT4mt\"]}},\"version\":1}",
      "bytecode": "6080604052605a600e5534801561001557600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612f0e806101046000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033",
      "bin": "6080604052605a600e5534801561001557600080fd5b50604080518082018252600681526504665537761760d41b6020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528351808303909101815260c09091019092528151910120600355600580546001600160a01b03191633179055612f0e806101046000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106101e55760003560e01c80636daf390b1161010f578063ba9a7a56116100a2578063d505accf11610071578063d505accf14610633578063dd62ed3e14610691578063f7013ef6146106cc578063fff6cae91461071f576101e5565b8063ba9a7a56146105e8578063bc25cf77146105f0578063c45a015514610623578063d0202d3b1461062b576101e5565b806389afcb44116100de57806389afcb441461053e57806395d89b411461058a578063a1f497d614610592578063a9059cbb146105af576101e5565b80636daf390b146104c857806370a08231146104d05780637464fc3d146105035780637ecebe001461050b576101e5565b806323b872dd116101875780633644e515116101565780633644e5151461047d5780635909c0d5146104855780635a3d54931461048d5780636a62784214610495576101e5565b806323b872dd146103e35780632ec2fe3d1461042657806330adf81f14610457578063313ce5671461045f576101e5565b806309f5d055116101c357806309f5d055146102fa57806313af40351461031457806318160ddd146103495780631c6da72414610351576101e5565b806306fdde03146101ea5780630902f1ac14610267578063095ea7b3146102ad575b600080fd5b6101f2610764565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561022c578181015183820152602001610214565b50505050905090810190601f1680156102595780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61026f61079d565b604080516dffffffffffffffffffffffffffff958616815293909416602084015263ffffffff90911682840152606082015290519081900360800190f35b6102e6600480360360408110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107f6565b604080519115158252519081900360200190f35b61030261080d565b60408051918252519081900360200190f35b6103476004803603602081101561032a57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610813565b005b6103026108e0565b6103476004803603606081101561036757600080fd5b81359173ffffffffffffffffffffffffffffffffffffffff602082013516918101906060810160408201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460018302840111640100000000831117156103d857600080fd5b5090925090506108e6565b6102e6600480360360608110156103f957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610f31565b61042e61100a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b610302611026565b61046761104a565b6040805160ff9092168252519081900360200190f35b61030261104f565b610302611055565b61030261105b565b610302600480360360208110156104ab57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611061565b61042e611403565b610302600480360360208110156104e657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661141f565b610302611431565b6103026004803603602081101561052157600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611437565b6105716004803603602081101561055457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611449565b6040805192835260208301919091528051918290030190f35b6101f26118d5565b610347600480360360208110156105a857600080fd5b503561190e565b6102e6600480360360408110156105c557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135611999565b6103026119a6565b6103476004803603602081101561060657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166119ac565b61042e611b99565b61042e611bb5565b610347600480360360e081101561064957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611bd1565b610302600480360360408110156106a757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611e9d565b610347600480360360a08110156106e257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020810135821691604082013581169160608101359091169060800135611eba565b61072761207c565b60405180836dffffffffffffffffffffffffffff168152602001826dffffffffffffffffffffffffffff1681526020019250505060405180910390f35b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b600954600d546dffffffffffffffffffffffffffff808316936e0100000000000000000000000000008404909116927c0100000000000000000000000000000000000000000000000000000000900463ffffffff169190565b600061080333848461226f565b5060015b92915050565b600d5481565b60055473ffffffffffffffffffffffffffffffffffffffff16331461089957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600680547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60005481565b600e54605a1461095757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55836109b2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612e926022913960400191505060405180910390fd5b6009546dffffffffffffffffffffffffffff808216916e010000000000000000000000000000900416808610610a4957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f4665537761703a20494e53554646494349454e545f4c49515549444954590000604482015290519081900360640190fd5b600754600854600091829173ffffffffffffffffffffffffffffffffffffffff918216919081169089168214801590610aae57508073ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff1614155b610b1957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601260248201527f4665537761703a20494e56414c49445f544f0000000000000000000000000000604482015290519081900360640190fd5b610b24818a8c6122de565b8615610be8578873ffffffffffffffffffffffffffffffffffffffff1663387d768a338c8b8b6040518563ffffffff1660e01b8152600401808573ffffffffffffffffffffffffffffffffffffffff168152602001848152602001806020018281038252848482818152602001925080828437600081840152601f19601f82011690508083019250505095505050505050600060405180830381600087803b158015610bcf57600080fd5b505af1158015610be3573d6000803e3d6000fd5b505050505b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8416916370a08231916024808301926020929190829003018186803b158015610c5457600080fd5b505afa158015610c68573d6000803e3d6000fd5b505050506040513d6020811015610c7e57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191955073ffffffffffffffffffffffffffffffffffffffff8316916370a0823191602480820192602092909190829003018186803b158015610cf057600080fd5b505afa158015610d04573d6000803e3d6000fd5b505050506040513d6020811015610d1a57600080fd5b5051925060009150506dffffffffffffffffffffffffffff85168311610d41576000610d55565b846dffffffffffffffffffffffffffff1683035b9050600089856dffffffffffffffffffffffffffff16038311610d79576000610d8f565b89856dffffffffffffffffffffffffffff160383035b90506000821180610da05750600081115b610df5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612e716021913960400191505060405180910390fd5b6000610e17610e058360036124eb565b610e11866103e86124eb565b90612571565b9050610e426103e8610e3c6dffffffffffffffffffffffffffff8a8116908a166124eb565b906124eb565b610e4c86836124eb565b1015610eb957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f4665537761703a204b0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b610ec5858589896125e3565b60408051848152602081018490528082018d9052905173ffffffffffffffffffffffffffffffffffffffff8c169133917ffcfa612587d1091cc6d8ce39878a7e6e8742c856865fc9d64db3e1a2f1ab52ef9181900360600190a35050605a600e55505050505050505050565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14610ff55773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610fc39083612571565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b611000848484612899565b5060019392505050565b60065473ffffffffffffffffffffffffffffffffffffffff1681565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b600a5481565b600b5481565b6000600e54605a146110d457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806110e461079d565b5050600754604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905193955091935060009273ffffffffffffffffffffffffffffffffffffffff909116916370a08231916024808301926020929190829003018186803b15801561115f57600080fd5b505afa158015611173573d6000803e3d6000fd5b505050506040513d602081101561118957600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905192935060009273ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561120257600080fd5b505afa158015611216573d6000803e3d6000fd5b505050506040513d602081101561122c57600080fd5b50519050600061124c836dffffffffffffffffffffffffffff8716612571565b9050600061126a836dffffffffffffffffffffffffffff8716612571565b9050600061128061127b84846124eb565b61296e565b9050600061128e88886129c0565b600054909150806112b9576112a5836103e8612571565b99506112b460006103e8612bff565b61130a565b6113076dffffffffffffffffffffffffffff8a166112d787846124eb565b816112de57fe5b046dffffffffffffffffffffffffffff8a166112fa87856124eb565b8161130157fe5b04612ca3565b99505b60008a11611363576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612e4c6025913960400191505060405180910390fd5b61136d8b8b612bff565b61137987878b8b6125e3565b81156113b5576009546113b1906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b6040805186815260208101869052815133927f4c209b5fc8ad50758f13e2e1088ba56a560dff690a1c6fef26394f4c03821c4f928290030190a25050605a600e555095979650505050505050565b60075473ffffffffffffffffffffffffffffffffffffffff1681565b60016020526000908152604090205481565b600c5481565b60046020526000908152604090205481565b600080600e54605a146114bd57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e556000806114cd61079d565b5050600754600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905194965092945073ffffffffffffffffffffffffffffffffffffffff9182169391169160009184916370a08231916024808301926020929190829003018186803b15801561155057600080fd5b505afa158015611564573d6000803e3d6000fd5b505050506040513d602081101561157a57600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191925060009173ffffffffffffffffffffffffffffffffffffffff8516916370a08231916024808301926020929190829003018186803b1580156115ee57600080fd5b505afa158015611602573d6000803e3d6000fd5b505050506040513d602081101561161857600080fd5b50513060009081526001602052604081205491925061163788886129c0565b6000549091508061164884876124eb565b8161164f57fe5b049a508061165d84866124eb565b8161166457fe5b04995060008b118015611677575060008a115b6116cc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612eb46025913960400191505060405180910390fd5b6116d63084612cbb565b6116e1878d8d6122de565b6116ec868d8c6122de565b604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff8916916370a08231916024808301926020929190829003018186803b15801561175857600080fd5b505afa15801561176c573d6000803e3d6000fd5b505050506040513d602081101561178257600080fd5b5051604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905191965073ffffffffffffffffffffffffffffffffffffffff8816916370a0823191602480820192602092909190829003018186803b1580156117f457600080fd5b505afa158015611808573d6000803e3d6000fd5b505050506040513d602081101561181e57600080fd5b5051935061182e85858b8b6125e3565b811561186a57600954611866906dffffffffffffffffffffffffffff808216916e0100000000000000000000000000009004166124eb565b600c555b604080518c8152602081018c9052815173ffffffffffffffffffffffffffffffffffffffff8f169233927fdccd412f0b1252819cb1fd330b93224ca42612892bb3f4f789976e6d81936496929081900390910190a3505050505050505050605a600e81905550915091565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60055473ffffffffffffffffffffffffffffffffffffffff16331461199457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b600d55565b6000610803338484612899565b6103e881565b600e54605a14611a1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b6069600e55600754600854600954604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff9485169490931692611af39285928792611aee926dffffffffffffffffffffffffffff169185916370a0823191602480820192602092909190829003018186803b158015611abc57600080fd5b505afa158015611ad0573d6000803e3d6000fd5b505050506040513d6020811015611ae657600080fd5b505190612571565b6122de565b611b8f8184611aee6009600e9054906101000a90046dffffffffffffffffffffffffffff166dffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015611abc57600080fd5b5050605a600e5550565b60055473ffffffffffffffffffffffffffffffffffffffff1681565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b42841015611c4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611da1573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611e1c57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611e8757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b611e9289898961226f565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b60055473ffffffffffffffffffffffffffffffffffffffff163314611f4057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4665537761703a20464f5242494444454e000000000000000000000000000000604482015290519081900360640190fd5b6007805473ffffffffffffffffffffffffffffffffffffffff8088167fffffffffffffffffffffffff0000000000000000000000000000000000000000928316179092556008805487841690831617905560068054928616929091169190911790558015611fae57600d8190555b600754604080517f095ea7b300000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff85811660048301527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60248301529151919092169163095ea7b39160448083019260209291908290030181600087803b15801561204957600080fd5b505af115801561205d573d6000803e3d6000fd5b505050506040513d602081101561207357600080fd5b50505050505050565b600080600e54605a146120f057604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600e60248201527f4665537761703a204c4f434b4544000000000000000000000000000000000000604482015290519081900360640190fd5b50506069600e55600954600754604080517f70a0823100000000000000000000000000000000000000000000000000000000815230600482015290516dffffffffffffffffffffffffffff808516946e010000000000000000000000000000900416926122669273ffffffffffffffffffffffffffffffffffffffff909116916370a0823191602480820192602092909190829003018186803b15801561219657600080fd5b505afa1580156121aa573d6000803e3d6000fd5b505050506040513d60208110156121c057600080fd5b5051600854604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905173ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561223357600080fd5b505afa158015612247573d6000803e3d6000fd5b505050506040513d602081101561225d57600080fd5b505184846125e3565b605a600e559091565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b604080518082018252601981527f7472616e7366657228616464726573732c75696e743235362900000000000000602091820152815173ffffffffffffffffffffffffffffffffffffffff85811660248301526044808301869052845180840390910181526064909201845291810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb000000000000000000000000000000000000000000000000000000001781529251815160009460609489169392918291908083835b602083106123e457805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016123a7565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612446576040519150601f19603f3d011682016040523d82523d6000602084013e61244b565b606091505b5091509150818015612479575080511580612479575080806020019051602081101561247657600080fd5b50515b6124e457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f4665537761703a205452414e534645525f4641494c4544000000000000000000604482015290519081900360640190fd5b5050505050565b60008115806125065750508082028282828161250357fe5b04145b61080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6dffffffffffffffffffffffffffff841180159061260f57506dffffffffffffffffffffffffffff8311155b61267a57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f4665537761703a204f564552464c4f5700000000000000000000000000000000604482015290519081900360640190fd5b60095463ffffffff428116917c0100000000000000000000000000000000000000000000000000000000900481168203908116158015906126ca57506dffffffffffffffffffffffffffff841615155b80156126e557506dffffffffffffffffffffffffffff831615155b1561278f578063ffffffff16612722856126fe86612d74565b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1690612d98565b600a80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff929092169290920201905563ffffffff8116612762846126fe87612d74565b600b80547bffffffffffffffffffffffffffffffffffffffffffffffffffffffff92909216929092020190555b600980547fffffffffffffffffffffffffffffffffffff0000000000000000000000000000166dffffffffffffffffffffffffffff888116919091177fffffffff0000000000000000000000000000ffffffffffffffffffffffffffff166e0100000000000000000000000000008883168102919091177bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167c010000000000000000000000000000000000000000000000000000000063ffffffff871602179283905560408051848416815291909304909116602082015281517f1c411e9a96e071241c2f21f7726b17ae89e3cab4c78be50e062b03a9fffbbad1929181900390910190a1505050505050565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600160205260409020546128c99082612571565b73ffffffffffffffffffffffffffffffffffffffff80851660009081526001602052604080822093909355908416815220546129059082612dd9565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b600060038211156129b1575080600160028204015b818110156129ab5780915060028182858161299a57fe5b0401816129a357fe5b049050612983565b506129bb565b81156129bb575060015b919050565b6000806000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166202eab76040518163ffffffff1660e01b8152600401604080518083038186803b158015612a2b57600080fd5b505afa158015612a3f573d6000803e3d6000fd5b505050506040513d6040811015612a5557600080fd5b508051602090910151909250905073ffffffffffffffffffffffffffffffffffffffff8216151580612a9e575060065473ffffffffffffffffffffffffffffffffffffffff1615155b600c549093508315612bea578015612be5576000612ad261127b6dffffffffffffffffffffffffffff8981169089166124eb565b90506000612adf8361296e565b9050612aec816014612dd9565b821115612be2576000612b106006610e3c612b078686612571565b600054906124eb565b90506000612b2883612b2286896124eb565b90612dd9565b90506000612b3782600a6124eb565b8381612b3f57fe5b049050600081118015612b69575060065473ffffffffffffffffffffffffffffffffffffffff1615155b15612b9157600654612b919073ffffffffffffffffffffffffffffffffffffffff1682612bff565b6000612b9e83600f6124eb565b8481612ba657fe5b049050600081118015612bce575073ffffffffffffffffffffffffffffffffffffffff891615155b15612bdd57612bdd8982612bff565b505050505b50505b612bf6565b8015612bf6576000600c555b50505092915050565b600054612c0c9082612dd9565b600090815573ffffffffffffffffffffffffffffffffffffffff8316815260016020526040902054612c3e9082612dd9565b73ffffffffffffffffffffffffffffffffffffffff831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000818310612cb25781612cb4565b825b9392505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054612ceb9082612571565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554612d1f9082612571565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a35050565b6dffffffffffffffffffffffffffff166e0100000000000000000000000000000290565b60006dffffffffffffffffffffffffffff82167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff841681612dd157fe5b049392505050565b8082018281101561080757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e5445444665537761703a20494e53554646494349454e545f494e5055545f414d4f554e544665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e544665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544a2646970667358221220f91a0906f38d17c1d9e8bc2f7399930d121217fa2acee35db092a20c4d49af1964736f6c634300060c0033",
      "srcmap": "325:11818:2:-:0;;;1483:4;1459:28;;3048:60;;;;;;;;;-1:-1:-1;1367:4:0;;;;;;;;;;;-1:-1:-1;1367:4:0;;;;;1402:10;;;;;;;;;;-1:-1:-1;1402:10:0;;;;1208:278;;1237:95;1208:278;;;;1351:22;1208:278;;;;1392:21;1208:278;;;;1135:9;1208:278;;;;1466:4;1208:278;;;;;;;;;;;;;;;;;;;;;;;;;1184:313;;;;;1165:16;:332;3080:7:2;:20;;-1:-1:-1;3080:20:2;3090:10;3080:20;;;-1:-1:-1;;325:11818:2;-1:-1:-1;325:11818:2;;",
      "srcmap-runtime": "325:11818:2:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:47:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1644:395:2;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:156:0;;;;;;;;;;;;;;;;-1:-1:-1;2345:156:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1409:41:2;;;:::i;:::-;;;;;;;;;;;;;;;;3669:159;;;;;;;;;;;;;;;;-1:-1:-1;3669:159:2;;;;:::i;:::-;;379:33:0;;;:::i;9675:1723:2:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9675:1723:2;;-1:-1:-1;9675:1723:2;-1:-1:-1;9675:1723:2;:::i;2665:310:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2665:310:0;;;;;;;;;;;;;;;;;;:::i;755:33:2:-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;707:117:0;;;:::i;328:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;555:40;;;:::i;1183:41:2:-;;;:::i;1231:::-;;;:::i;6537:1383::-;;;;;;;;;;;;;;;;-1:-1:-1;6537:1383:2;;;;:::i;799:31::-;;;:::i;419:50:0:-;;;;;;;;;;;;;;;;-1:-1:-1;419:50:0;;;;:::i;1279:26:2:-;;;:::i;831:47:0:-;;;;;;;;;;;;;;;;-1:-1:-1;831:47:0;;;;:::i;8032:1531:2:-;;;;;;;;;;;;;;;;-1:-1:-1;8032:1531:2;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;274:47:0;;;:::i;3836:172:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3836:172:2;;:::i;2509:148:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2509:148:0;;;;;;;;;:::i;447:55:2:-;;;:::i;11447:358::-;;;;;;;;;;;;;;;;-1:-1:-1;11447:358:2;;;;:::i;717:31::-;;;:::i;837:32::-;;;:::i;2983:677:0:-;;;;;;;;;;;;;;;;-1:-1:-1;2983:677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;476:70::-;;;;;;;;;;;;;;;;-1:-1:-1;476:70:0;;;;;;;;;;;:::i;3173:488:2:-;;;;;;;;;;;;;;;;-1:-1:-1;3173:488:2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;11854:286::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:47:0;;;;;;;;;;;;;;;;;;;:::o;1644:395:2:-;1879:9;;2009:20;;1879:9;;;;;1913:10;;;;;;;1956:18;;;;;;2009:20;1644:395::o;2345:156:0:-;2418:4;2435:36;2444:10;2456:7;2465:5;2435:8;:36::i;:::-;-1:-1:-1;2489:4:0;2345:156;;;;;:::o;1409:41:2:-;;;;:::o;3669:159::-;3758:7;;;;3744:10;:21;3736:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3798:9;:22;;;;;;;;;;;;;;;3669:159::o;379:33:0:-;;;;:::o;9675:1723:2:-;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:4;1575:8;:15;9780:13;9772:60:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9888:9;::::0;::::1;::::0;;::::1;::::0;9899:10;;::::1;;9951:23:::0;;::::1;9943:66;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10196:7;::::0;10205:8:::1;::::0;10022:14:::1;::::0;;;10196:7:::1;::::0;;::::1;::::0;10205:8;;::::1;::::0;10263:14;::::1;::::0;::::1;::::0;::::1;::::0;:33:::1;;;10287:9;10281:15;;:2;:15;;;;10263:33;10255:64;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;10334:39;10348:9;10359:2;10363:9;10334:13;:39::i;:::-;10393:15:::0;;10389:78:::1;;10424:2;10410:28;;;10439:10;10451:9;10462:4;;10410:57;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;10389:78;10494:41;::::0;;;;;10529:4:::1;10494:41;::::0;::::1;::::0;;;:26:::1;::::0;::::1;::::0;::::1;::::0;:41;;;;;::::1;::::0;;;;;;;;:26;:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;10494:41:2;10563:42:::1;::::0;;;;;10599:4:::1;10563:42;::::0;::::1;::::0;;;10494:41;;-1:-1:-1;10563:27:2::1;::::0;::::1;::::0;::::1;::::0;:42;;;;;10494:41:::1;::::0;10563:42;;;;;;;;:27;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;10563:42:2;;-1:-1:-1;10629:20:2::1;::::0;-1:-1:-1;;10652:22:2::1;::::0;::::1;::::0;::::1;:51;;10702:1;10652:51;;;10689:10;10677:22;;:9;:22;10652:51;10629:74;;10714:21;10766:9;10752:11;:23;;;10738:10;:38;:128;;10865:1;10738:128;;;10852:9;10838:11;:23;;;10824:10;:38;10738:128;10714:152;;10929:1;10911:15;:19;:43;;;;10953:1;10934:16;:20;10911:43;10903:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11005:23;11031:49;11056:23;:16:::0;11077:1:::1;11056:20;:23::i;:::-;11031:20;:10:::0;11046:4:::1;11031:14;:20::i;:::-;:24:::0;::::1;:49::i;:::-;11005:75:::0;-1:-1:-1;11183:43:2::1;11221:4;11183:33;;:16:::0;;::::1;::::0;:33;::::1;:20;:33::i;:::-;:37:::0;::::1;:43::i;:::-;11146:33;:9:::0;11160:18;11146:13:::1;:33::i;:::-;:80;;11138:102;;;::::0;;::::1;::::0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;11253:55;11261:9;11272:10;11284;11296:11;11253:7;:55::i;:::-;11324:66;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;::::1;::::0;11329:10:::1;::::0;11324:66:::1;::::0;;;;;;;::::1;-1:-1:-1::0;;1624:4:2;1613:8;:15;-1:-1:-1;;;;;;;;;9675:1723:2:o;2665:310:0:-;2773:15;;;2752:4;2773:15;;;:9;:15;;;;;;;;2789:10;2773:27;;;;;;;;2809:2;2773:39;2769:140;;2859:15;;;;;;;:9;:15;;;;;;;;2875:10;2859:27;;;;;;;;:38;;2891:5;2859:31;:38::i;:::-;2829:15;;;;;;;:9;:15;;;;;;;;2845:10;2829:27;;;;;;;:68;2769:140;2919:26;2929:4;2935:2;2939:5;2919:9;:26::i;:::-;-1:-1:-1;2963:4:0;2665:310;;;;;:::o;755:33:2:-;;;;;;:::o;707:117:0:-;758:66;707:117;:::o;328:44::-;370:2;328:44;:::o;555:40::-;;;;:::o;1183:41:2:-;;;;:::o;1231:::-;;;;:::o;6537:1383::-;6595:14;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:4;1575:8;:15;6623:18:::1;::::0;6669:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;6732:7:2::1;::::0;6725:40:::1;::::0;;;;;6759:4:::1;6725:40;::::0;::::1;::::0;;;6622:60;;-1:-1:-1;6622:60:2;;-1:-1:-1;6708:14:2::1;::::0;6732:7:::1;::::0;;::::1;::::0;6725:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;6732:7;6725:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6725:40:2;6801:8:::1;::::0;6794:41:::1;::::0;;;;;6829:4:::1;6794:41;::::0;::::1;::::0;;;6725:40;;-1:-1:-1;6776:15:2::1;::::0;6801:8:::1;::::0;;::::1;::::0;6794:26:::1;::::0;:41;;;;;6725:40:::1;::::0;6794:41;;;;;;;;6801:8;6794:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;6794:41:2;;-1:-1:-1;6846:18:2::1;6867:25;:9:::0;:25:::1;::::0;::::1;:13;:25::i;:::-;6846:46:::0;-1:-1:-1;6903:19:2::1;6925:27;:10:::0;:27:::1;::::0;::::1;:14;:27::i;:::-;6903:49:::0;-1:-1:-1;6963:12:2::1;6978:44;6988:33;:13:::0;6903:49;6988:17:::1;:33::i;:::-;6978:9;:44::i;:::-;6963:59;;7035:10;7048:33;7057:10;7069:11;7048:8;:33::i;:::-;7092:17;7112:11:::0;7035:46;;-1:-1:-1;7216:17:2;7212:345:::1;;7262:30;:7:::0;497:5:::1;7262:11;:30::i;:::-;7250:42;;7307:36;7321:1;497:5;7307;:36::i;:::-;7212:345;;;7443:102;7452:44;::::0;::::1;:31;:13:::0;7470:12;7452:17:::1;:31::i;:::-;:44;;;;;;7498:46;::::0;::::1;:32;:14:::0;7517:12;7498:18:::1;:32::i;:::-;:46;;;;;;7443:8;:102::i;:::-;7431:114;;7212:345;7587:1;7575:9;:13;7567:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7641:20;7647:2;7651:9;7641:5;:20::i;:::-;7674:55;7682:9;7693:10;7705;7717:11;7674:7;:55::i;:::-;7744:5;7740:50;;;7779:10;::::0;7759:31:::1;::::0;7779:10:::1;7764:9:::0;;::::1;::::0;7779:10;;::::1;;7759:19;:31::i;:::-;7751:5;:39:::0;7740:50:::1;7865:47;::::0;;;;;::::1;::::0;::::1;::::0;;;;;7870:10:::1;::::0;7865:47:::1;::::0;;;;;;::::1;-1:-1:-1::0;;1624:4:2;1613:8;:15;-1:-1:-1;6537:1383:2;;;-1:-1:-1;;;;;;;6537:1383:2:o;799:31::-;;;;;;:::o;419:50:0:-;;;;;;;;;;;;;:::o;1279:26:2:-;;;;:::o;831:47:0:-;;;;;;;;;;;;;:::o;8032:1531:2:-;8090:13;8105:14;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:4;1575:8;:15;8133:18:::1;::::0;8179:13:::1;:11;:13::i;:::-;-1:-1:-1::0;;8263:7:2::1;::::0;8272:8:::1;::::0;8327:41:::1;::::0;;;;;8362:4:::1;8327:41;::::0;::::1;::::0;;;8132:60;;-1:-1:-1;8132:60:2;;-1:-1:-1;8263:7:2::1;::::0;;::::1;::::0;8272:8;::::1;::::0;8223:16:::1;::::0;8263:7;;8327:26:::1;::::0;:41;;;;;::::1;::::0;;;;;;;;8263:7;8327:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8327:41:2;8397:42:::1;::::0;;;;;8433:4:::1;8397:42;::::0;::::1;::::0;;;8327:41;;-1:-1:-1;8379:15:2::1;::::0;8397:27:::1;::::0;::::1;::::0;::::1;::::0;:42;;;;;8327:41:::1;::::0;8397:42;;;;;;;:27;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;8397:42:2;8485:4:::1;8450:14;8467:24:::0;;;:9:::1;8397:42;8467:24:::0;;;;;8397:42;;-1:-1:-1;8561:33:2::1;8570:10:::0;8582:11;8561:8:::1;:33::i;:::-;8605:17;8625:11:::0;8548:46;;-1:-1:-1;8625:11:2;8759:24:::1;:9:::0;8773;8759:13:::1;:24::i;:::-;:39;;;;;;::::0;-1:-1:-1;8901:12:2;8873:25:::1;:9:::0;8887:10;8873:13:::1;:25::i;:::-;:40;;;;;;8861:52;;8993:1;8982:8;:12;:29;;;;;9010:1;8998:9;:13;8982:29;8974:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9066:31;9080:4;9087:9;9066:5;:31::i;:::-;9108:37;9122:8;9132:2;9136:8;9108:13;:37::i;:::-;9156:39;9170:9;9181:2;9185:9;9156:13;:39::i;:::-;9218:41;::::0;;;;;9253:4:::1;9218:41;::::0;::::1;::::0;;;:26:::1;::::0;::::1;::::0;::::1;::::0;:41;;;;;::::1;::::0;;;;;;;;:26;:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9218:41:2;9283:42:::1;::::0;;;;;9319:4:::1;9283:42;::::0;::::1;::::0;;;9218:41;;-1:-1:-1;9283:27:2::1;::::0;::::1;::::0;::::1;::::0;:42;;;;;9218:41:::1;::::0;9283:42;;;;;;;;:27;:42;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;9283:42:2;;-1:-1:-1;9338:55:2::1;9346:9:::0;9283:42;9369:10;9381:11;9338:7:::1;:55::i;:::-;9408:5;9404:50;;;9443:10;::::0;9423:31:::1;::::0;9443:10:::1;9428:9:::0;;::::1;::::0;9443:10;;::::1;;9423:19;:31::i;:::-;9415:5;:39:::0;9404:50:::1;9514:41;::::0;;;;;::::1;::::0;::::1;::::0;;;;;::::1;::::0;::::1;::::0;9519:10:::1;::::0;9514:41:::1;::::0;;;;;;;;;::::1;1601:1;;;;;;;;;1624:4:::0;1613:8;:15;;;;8032:1531;;;:::o;274:47:0:-;;;;;;;;;;;;;;;;;;;:::o;3836:172:2:-;3930:7;;;;3916:10;:21;3908:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3970:20;:30;3836:172::o;2509:148:0:-;2578:4;2595:32;2605:10;2617:2;2621:5;2595:9;:32::i;447:55:2:-;497:5;447:55;:::o;11447:358::-;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1586:4;1575:8;:15;11526:7:::1;::::0;11579:8:::1;::::0;11687:9:::1;::::0;11641:41:::1;::::0;;;;;11676:4:::1;11641:41;::::0;::::1;::::0;;;11526:7:::1;::::0;;::::1;::::0;11579:8;;::::1;::::0;11613:85:::1;::::0;11526:7;;11637:2;;11641:56:::1;::::0;11687:9:::1;;::::0;11526:7;;11641:26:::1;::::0;:41;;;;;::::1;::::0;;;;;;;;;11526:7;11641:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;11641:41:2;;:45:::1;:56::i;:::-;11613:13;:85::i;:::-;11709:88;11723:9;11734:2;11738:58;11785:10;;;;;;;;;;;11738:58;;11745:9;11738:27;;;11774:4;11738:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;11709:88;-1:-1:-1::0;;1624:4:2;1613:8;:15;-1:-1:-1;11447:358:2:o;717:31::-;;;;;;:::o;837:32::-;;;;;;:::o;2983:677:0:-;3138:15;3126:8;:27;;3118:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3289:16;;3385:13;;;;3184:14;3385:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3334:77;;758:66;3334:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3324:88;;;;;;3225:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:237;;;;;;;;;3476:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3184:14;;3385:15;3476:26;;;;;-1:-1:-1;3476:26:0;;;;;;;;;;3385:15;3476:26;;;;;;;;;;;;;;;-1:-1:-1;;3476:26:0;;;;;;-1:-1:-1;;3521:30:0;;;;;;;:59;;;3575:5;3555:25;;:16;:25;;;3521:59;3513:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3621:31;3630:5;3637:7;3646:5;3621:8;:31::i;:::-;2983:677;;;;;;;;;:::o;476:70::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;3173:488:2:-;3335:7;;;;3321:10;:21;3313:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3375:7;:22;;;;;;;;;;;;;;3408:8;:23;;;;;;;;;;;3442:9;:24;;;;;;;;;;;;;;;3480:16;;3477:56;;3499:20;:34;;;3477:56;3551:7;;3544:41;;;;;;3551:7;3544:41;;;;;;;3581:2;3544:41;;;;;;3551:7;;;;;3544:23;;:41;;;;;;;;;;;;;;3551:7;;3544:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;3173:488:2:o;11854:286::-;11901:18;11921:19;1529:8;;1541:4;1529:16;1521:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;1586:4:2;1575:8;:15;11982:9:::1;::::0;12030:7:::1;::::0;12023:40:::1;::::0;;;;;12057:4:::1;12023:40;::::0;::::1;::::0;;;11982:9:::1;::::0;;::::1;::::0;11993:10;;::::1;;::::0;12015:117:::1;::::0;12030:7:::1;::::0;;::::1;::::0;12023:25:::1;::::0;:40;;;;;::::1;::::0;;;;;;;;;12030:7;12023:40;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12023:40:2;12072:8:::1;::::0;12065:41:::1;::::0;;;;;12100:4:::1;12065:41;::::0;::::1;::::0;;;12072:8:::1;::::0;;::::1;::::0;12065:26:::1;::::0;:41;;;;;12023:40:::1;::::0;12065:41;;;;;;;;12072:8;12065:41;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;12065:41:2;12108:10;12120:11;12015:7:::1;:117::i;:::-;1624:4:::0;1613:8;:15;11854:286;;:::o;1939:169:0:-;2020:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2069:31;;;;;;;;;;;;;;;;;1939:169;;;:::o;2047:284:2:-;561:34;;;;;;;;;;;;;;;;;2175:43;;2164:10;2175:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2164:55;;;;2129:12;;2143:17;;2164:10;;;2175:43;2164:55;;;2175:43;2164:55;;2175:43;2164:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2128:91;;;;2238:7;:57;;;;-1:-1:-1;2250:11:2;;:16;;:44;;;2281:4;2270:24;;;;;;;;;;;;;;;-1:-1:-1;2270:24:2;2250:44;2230:93;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2047:284;;;;;:::o;470:142:17:-;522:6;549;;;:30;;-1:-1:-1;;564:5:17;;;578:1;573;564:5;573:1;559:15;;;;;:20;549:30;541:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;333:129;417:5;;;412:16;;;;404:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4095:884:2;4213:24;;;;;;:53;;-1:-1:-1;4241:25:2;;;;4213:53;4205:82;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4402:18;;4329:23;:15;:23;;;4402:18;;;;;4385:35;;;4458:15;;;;;;:34;;-1:-1:-1;4477:15:2;;;;;4458:34;:54;;;;-1:-1:-1;4496:16:2;;;;;4458:54;4454:345;;;4670:11;4614:67;;4619:47;4655:10;4619:29;4636:11;4619:16;:29::i;:::-;:35;;;;:47::i;:::-;4590:20;:91;;4614:53;;;;;:67;;;;4590:91;;;4720:67;;;4725:47;4760:11;4725:28;4742:10;4725:16;:28::i;:47::-;4696:20;:91;;4720:53;;;;;:67;;;;4696:91;;;4454:345;4809:9;:30;;;;;;;;;;;;4850:32;;;;;;;;;;;;4893:35;;;;;;;;;;;;4944:27;;;4949:9;;;4944:27;;4960:10;;;;;;;4944:27;;;;;;;;;;;;;;;;;4095:884;;;;;;:::o;2116:221:0:-;2211:15;;;;;;;:9;:15;;;;;;:26;;2231:5;2211:19;:26::i;:::-;2193:15;;;;;;;;:9;:15;;;;;;:44;;;;2264:13;;;;;;;:24;;2282:5;2264:17;:24::i;:::-;2248:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2304:25;;;;;;;2248:13;;2304:25;;;;;;;;;;;;;2116:221;;;:::o;354:303:16:-;399:6;426:1;422;:5;418:232;;;-1:-1:-1;448:1:16;481;477;473:5;;:9;497:92;508:1;504;:5;497:92;;;534:1;530:5;;572:1;567;563;559;:5;;;;;;:9;558:15;;;;;;554:19;;497:92;;;418:232;;;;610:6;;606:44;;-1:-1:-1;637:1:16;606:44;354:303;;;:::o;5069:1356:2:-;5145:10;5169:13;5184:20;5223:7;;;;;;;;;;;5208:34;;;:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5208:36:2;;;;;;;;;-1:-1:-1;5208:36:2;-1:-1:-1;5264:19:2;;;;;;5263:50;;-1:-1:-1;5289:9:2;;:23;:9;:23;;5263:50;5338:5;;5255:58;;-1:-1:-1;5380:1026:2;;;;5410:11;;5406:930;;5442:10;5455:44;5465:33;;:16;;;;:33;;:20;:33::i;5455:44::-;5442:57;;5518:14;5535:17;5545:6;5535:9;:17::i;:::-;5518:34;-1:-1:-1;5583:17:2;5518:34;5597:2;5583:13;:17::i;:::-;5575:5;:25;5571:750;;;5679:14;5696:44;5738:1;5696:37;5712:20;:5;5722:9;5712;:20::i;:::-;5696:11;;;:15;:37::i;:44::-;5679:61;-1:-1:-1;5763:16:2;5782:41;5813:9;5782:26;:5;5792:15;5782:9;:26::i;:::-;:30;;:41::i;:::-;5763:60;-1:-1:-1;5846:21:2;5883:19;5763:60;5899:2;5883:15;:19::i;:::-;5870:9;:33;;;;;;5846:57;;5949:1;5930:16;:20;5929:51;;;;-1:-1:-1;5956:9:2;;:23;:9;:23;;5929:51;5926:141;;;6015:9;;6009:34;;6015:9;;6026:16;6009:5;:34::i;:::-;6090:20;6126:19;:11;6142:2;6126:15;:19::i;:::-;6113:9;:33;;;;;;6090:56;;6191:1;6173:15;:19;6172:47;;;;-1:-1:-1;6199:19:2;;;;;6172:47;6169:132;;;6248:29;6254:5;6261:15;6248:5;:29::i;:::-;5571:750;;;;;5406:930;;;5380:1026;;;6357:11;;6353:53;;6393:1;6385:5;:9;6353:53;5069:1356;;;;;;;:::o;1513:201:0:-;1586:11;;:22;;1602:5;1586:15;:22::i;:::-;1572:11;:36;;;1635:13;;;;;:9;:13;;;;;;:24;;1653:5;1635:17;:24::i;:::-;1619:13;;;;;;;:9;:13;;;;;;;;:40;;;;1675:31;;;;;;;1619:13;;;;1675:31;;;;;;;;;;1513:201;;:::o;140:96:16:-;192:6;219:1;215;:5;:13;;227:1;215:13;;;223:1;215:13;211:17;140:96;-1:-1:-1;;;140:96:16:o;1722:209:0:-;1801:15;;;;;;;:9;:15;;;;;;:26;;1821:5;1801:19;:26::i;:::-;1783:15;;;;;;;:9;:15;;;;;:44;;;;1852:11;:22;;1868:5;1852:15;:22::i;:::-;1838:11;:36;;;1890:33;;;;;;;;;;;;;;;;;;;;;;1722:209;;:::o;331:120:19:-;407:10;;276:6;407:17;;331:120::o;522:108::-;582:9;612:10;;;608:14;;;612:10;608:14;;;;;;522:108;-1:-1:-1;;;522:108:19:o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/FeSwapRouter.sol:FeSwapRouter": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_factory",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_feswaNFT",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "_WETH",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenID",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "pairOwner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rateTrigger",
              "type": "uint256"
            }
          ],
          "name": "ManageFeswaPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pairAAB",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "pairABB",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ratio",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityABB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ratio",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTEE",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "estimateAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "estimateAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feswaNFT",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityABB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTEE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTEE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityETHFeeOnTransfer",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTEE",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermitFeeOnTransfer",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokensFeeOnTransfer",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETHFeeOnTransfer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokensFeeOnTransfer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60e06040523480156200001157600080fd5b50604051620059203803806200592083398101604081905262000034916200005c565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c8565b60008060006060848603121562000071578283fd5b83516200007e81620000af565b60208501519093506200009181620000af565b6040850151909250620000a481620000af565b809150509250925092565b6001600160a01b0381168114620000c557600080fd5b50565b60805160601c60a05160601c60c05160601c615728620001f8600039806101c252806105a952806107625280610dd85280610f3652806112ca52806113f7528061148c52806116ac52806117c65280611c585280611d965280611e945280611f075280611f7a5280611ff1528061234c52806123f75280612478528061271252806128b052806129da5280612a6f5280612c395280612c9a5280612d535280612e9d5280612edd5280612f9652508061108852806128215250806106605280610839528061095152806109bc5280610af15280610e8f5280610f1452806111ef528061137552806115ec528061188e5280611a1752806122ed52806124b752806126f0528061284a528061295b52806134c3528061350652806138dd5280613a155280613f7452506157286000f3fe6080604052600436106101a55760003560e01c806396adb337116100e1578063c45a01551161008a578063ead86a2911610064578063ead86a29146104dc578063eef40f31146104f1578063fb3bdb4114610511578063ffbcf7f314610524576101eb565b8063c45a015514610494578063d57b57a5146104a9578063ded9382a146104bc576101eb565b8063ad615dec116100bb578063ad615dec14610424578063ba3690cb14610444578063ba9f20b814610464576101eb565b806396adb337146103c2578063a59600db146103e2578063ad5c464814610402576101eb565b80634a25d94a1161014e5780637ff36ab5116101285780637ff36ab51461034f57806385f8c259146103625780638803dbee146103825780638de9d7d2146103a2576101eb565b80634a25d94a146102e1578063573692c1146103015780636a055fa914610321576101eb565b80632e1db1431161017f5780632e1db1431461028157806338ed1739146102a15780633d221b20146102c1576101eb565b8063054d50d4146101f057806318cbafe5146102265780632195995c14610253576101eb565b366101eb573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101e957fe5b005b600080fd5b3480156101fc57600080fd5b5061021061020b366004614d67565b610537565b60405161021d91906155d0565b60405180910390f35b34801561023257600080fd5b50610246610241366004614cf6565b61054c565b60405161021d9190614f8d565b34801561025f57600080fd5b5061027361026e36600461476f565b61082f565b60405161021d92919061564e565b34801561028d57600080fd5b5061024661029c366004614c24565b61094a565b3480156102ad57600080fd5b506102466102bc366004614cf6565b610978565b3480156102cd57600080fd5b506101e96102dc366004614cf6565b610a8b565b3480156102ed57600080fd5b506102466102fc366004614cf6565b610d84565b34801561030d57600080fd5b5061021061031c3660046149c3565b610f0c565b34801561032d57600080fd5b5061034161033c366004614bed565b61103e565b60405161021d929190614f09565b61024661035d366004614c6e565b61128b565b34801561036e57600080fd5b5061021061037d366004614d67565b61159b565b34801561038e57600080fd5b5061024661039d366004614cf6565b6115a8565b3480156103ae57600080fd5b506102106103bd366004614ae4565b611669565b3480156103ce57600080fd5b506102736103dd366004614819565b611843565b3480156103ee57600080fd5b506101e96103fd366004614cf6565b611c06565b34801561040e57600080fd5b50610417611f05565b60405161021d9190614e69565b34801561043057600080fd5b5061021061043f366004614d67565b611f29565b34801561045057600080fd5b5061027361045f366004614ae4565b611f36565b34801561047057600080fd5b5061048461047f3660046146fe565b61206f565b60405161021d949392919061565c565b3480156104a057600080fd5b506104176122eb565b6101e96104b7366004614c6e565b61230f565b3480156104c857600080fd5b506102736104d7366004614a4e565b6126e6565b3480156104e857600080fd5b5061041761281f565b3480156104fd57600080fd5b5061024661050c366004614c24565b612843565b61024661051f366004614c6e565b612871565b610484610532366004614972565b612baf565b60006105448484846130f8565b949350505050565b60608142811015610592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018181106105f757fe5b905060200201602081019061060c9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006106877f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106106a057fe5b602002602001015110156106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610721878760008181106106f057fe5b90506020020160208101906107059190614686565b33838660008151811061071457fe5b6020026020010151613322565b6107608388888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061344f915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d846001865103815181106107ac57fe5b60200260200101516040518263ffffffff1660e01b81526004016107d091906155d0565b600060405180830381600087803b1580156107ea57600080fd5b505af11580156107fe573d6000803e3d6000fd5b50505050610823858460018651038151811061081657fe5b60200260200101516135d9565b50509695505050505050565b600080600061085f7f00000000000000000000000000000000000000000000000000000000000000008f8f613692565b905060008761086e578c610890565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906108f1903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b5050505050506109368d8d8d60008e8e8e8e611843565b909e909d509b505050505050505050505050565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561370d565b606081428110156109b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006109e37f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106109fc57fe5b60200260200101511015610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610a4c878760008181106106f057fe5b610823838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b8042811015610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b610b5f85856000818110610ad657fe5b9050602002016020810190610aeb9190614686565b33610b597f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b9050602002016020810190610b329190614686565b8a8a6001818110610b3f57fe5b9050602002016020810190610b549190614686565b613692565b8a613322565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610b8f57fe5b9050602002016020810190610ba49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610bdc9190614e69565b60206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190614bd5565b9050610c6c868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250613895915050565b86610d428288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610c9f57fe5b9050602002016020810190610cb49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b60206040518083038186803b158015610d0457600080fd5b505afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190614bd5565b90613aee565b1015610d7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b5050505050505050565b60608142811015610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610e2657fe5b9050602002016020810190610e3b9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b6000610eb67f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b80945081925050508783600081518110610ecc57fe5b602002602001015111156106e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600080610f5a7f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600086610f69578a610f8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf90610fec903390309086908e908d908d908d90600401614e8a565b600060405180830381600087803b15801561100657600080fd5b505af115801561101a573d6000803e3d6000fd5b5050505061102e8c8c8c6000808e8e611669565b9c9b505050505050505050505050565b600080600061104b6145a9565b6040517f2f380b3500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f380b35906110bd908a906004016155d0565b60e06040518083038186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d9190614894565b90925090503373ffffffffffffffffffffffffffffffffffffffff831614611161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061535a565b60038160a00151600581111561117357fe5b10156111ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150ad565b805160208201516040517f883d273000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063883d27309061122a90859085908d908d90600401614f30565b6040805180830381600087803b15801561124357600080fd5b505af1158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b91906146c5565b909a909950975050505050505050565b606081428110156112c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061130c57fe5b90506020020160208101906113219190614686565b73ffffffffffffffffffffffffffffffffffffffff161461136e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b600061139c7f00000000000000000000000000000000000000000000000000000000000000003489896131a9565b809450819250505087836001855103815181106113b557fe5b602002602001015110156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08460008151811061143e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82856000815181106114d457fe5b60200260200101516040518363ffffffff1660e01b81526004016114f9929190614f67565b602060405180830381600087803b15801561151357600080fd5b505af1158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190614b35565b61155157fe5b611590838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b505095945050505050565b6000610544848484613ca7565b606081428110156115e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006116137f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b8094508192505050878360008151811061162957fe5b60200260200101511115610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600081428110156116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6116d6897f00000000000000000000000000000000000000000000000000000000000000008a8a8a8a308a611843565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935061178991508a90869073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190611734903090600401614e69565b60206040518083038186803b15801561174c57600080fd5b505afa158015611760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117849190614bd5565b613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906117fb9085906004016155d0565b600060405180830381600087803b15801561181557600080fd5b505af1158015611829573d6000803e3d6000fd5b5050505061183784836135d9565b50979650505050505050565b6000808242811015611881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b8815611a0a5760006118b47f00000000000000000000000000000000000000000000000000000000000000008d8d613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd9061190d90339085908f90600401614ed8565b602060405180830381600087803b15801561192757600080fd5b505af115801561193b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195f9190614b35565b506040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389afcb44906119b2908990600401614e69565b6040805180830381600087803b1580156119cb57600080fd5b505af11580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a039190614cd3565b9094509250505b8715611b84576000611a3d7f00000000000000000000000000000000000000000000000000000000000000008c8e613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd90611a9690339085908e90600401614ed8565b602060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae89190614b35565b506000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44896040518263ffffffff1660e01b8152600401611b259190614e69565b6040805180830381600087803b158015611b3e57600080fd5b505af1158015611b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b769190614cd3565b969096019594909401935050505b86831015611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906154df565b85821015611bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615391565b509850989650505050505050565b8042811015611c41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611ca657fe5b9050602002016020810190611cbb9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614611d08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b611d1885856000818110610ad657fe5b611d56858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613895915050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611dcb903090600401614e69565b60206040518083038186803b158015611de357600080fd5b505afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190614bd5565b905086811015611e57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90611ec99084906004016155d0565b600060405180830381600087803b158015611ee357600080fd5b505af1158015611ef7573d6000803e3d6000fd5b50505050610d7a84826135d9565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610544848484613e80565b6000808242811015611f74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b611fa48a7f00000000000000000000000000000000000000000000000000000000000000008b8b8b8b308b611843565b9093509150611fb48a8685613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906120269085906004016155d0565b600060405180830381600087803b15801561204057600080fd5b505af1158015612054573d6000803e3d6000fd5b5050505061206285836135d9565b5097509795505050505050565b60008060008084428110156120b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60648811156120eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b87156121f257600060646120ff8c8b613f1c565b8161210657fe5b04935060646121158b8b613f1c565b8161211c57fe5b04925061212b8d8d8686613f6d565b9197509550905061213e8d338389613322565b61214a8c338388613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061219c908b90600401614e69565b602060405180830381600087803b1580156121b657600080fd5b505af11580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ee9190614bd5565b9350505b606488146122dc57600061220c8c8e878d03898f03613f6d565b909c50909a5090506122208d33838e613322565b61222c8c33838d613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061227e908b90600401614e69565b602060405180830381600087803b15801561229857600080fd5b505af11580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d09190614bd5565b958b0195948a01949250505b50975097509750979350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b804281101561234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061238e57fe5b90506020020160208101906123a39190614686565b73ffffffffffffffffffffffffffffffffffffffff16146123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6124e37f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b836040518363ffffffff1660e01b8152600401612501929190614f67565b602060405180830381600087803b15801561251b57600080fd5b505af115801561252f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125539190614b35565b61255957fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061258957fe5b905060200201602081019061259e9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016125d69190614e69565b60206040518083038186803b1580156125ee57600080fd5b505afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126269190614bd5565b9050612666878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613895915050565b87610d428289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061269957fe5b90506020020160208101906126ae9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401610cec9190614e69565b60008060006127367f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600087612745578c612767565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906127c8903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b1580156127e257600080fd5b505af11580156127f6573d6000803e3d6000fd5b5050505061280a8e8e60008f8f8f8f611f36565b909f909e509c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561417f565b606081428110156128ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106128f257fe5b90506020020160208101906129079190614686565b73ffffffffffffffffffffffffffffffffffffffff1614612954576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006129827f0000000000000000000000000000000000000000000000000000000000000000898989613b31565b8094508192505050348360008151811061299857fe5b602002602001015111156129d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db084600081518110612a2157fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a5457600080fd5b505af1158015612a68573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8285600081518110612ab757fe5b60200260200101516040518363ffffffff1660e01b8152600401612adc929190614f67565b602060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2e9190614b35565b612b3457fe5b612b73838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b82600081518110612b8057fe5b6020026020010151341115611590576115903384600081518110612ba057fe5b602002602001015134036135d9565b6000806000808442811015612bf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6064881115612c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b8715612e8d576000612c858b7f00000000000000000000000000000000000000000000000000000000000000006064612c648e8e613f1c565b81612c6b57fe5b046064612c78348f613f1c565b81612c7f57fe5b04613f6d565b91975095509050612c988b338389613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d0057600080fd5b505af1158015612d14573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612d8d915084908990600401614f67565b602060405180830381600087803b158015612da757600080fd5b505af1158015612dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddf9190614b35565b612de557fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290612e37908b90600401614e69565b602060405180830381600087803b158015612e5157600080fd5b505af1158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190614bd5565b9350505b606488146130d757600080612ec87f00000000000000000000000000000000000000000000000000000000000000008d8834038a8f03613f6d565b909c5092509050612edb8c33848e613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f4357600080fd5b505af1158015612f57573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612fd0915085908590600401614f67565b602060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130229190614b35565b61302857fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690636a6278429061307a908c90600401614e69565b602060405180830381600087803b15801561309457600080fd5b505af11580156130a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cc9190614bd5565b968b01969501949250505b833411156130eb576130eb338534036135d9565b5095509550955095915050565b6000808411613133576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906151af565b6000831180156131435750600082115b613179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b60006131858584613f1c565b9050600061319385876142c6565b905080828161319e57fe5b049695505050505050565b6000606060028310156131e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff811180156131ff57600080fd5b50604051908082528060200260200182016040528015613229578160200160208202803683370190505b509050848160008151811061323a57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84018110156133185760008060006132c68a89898781811061328857fe5b905060200201602081019061329d9190614686565b8a8a886001018181106132ac57fe5b90506020020160208101906132c19190614686565b614303565b9250925092506132ea8585815181106132db57fe5b602002602001015184846130f8565b8585600101815181106132f957fe5b60209081029190910101528361330d578095505b505050600101613249565b5094509492505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161335793929190614ed8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516133a59190614dcc565b6000604051808303816000865af19150503d80600081146133e2576040519150601f19603f3d011682016040523d82523d6000602084013e6133e7565b606091505b50915091508180156134115750805115806134115750808060200190518101906134119190614b35565b613447576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061553c565b505050505050565b60005b60018351038110156135d35760008084838151811061346d57fe5b602002602001015185846001018151811061348457fe5b60200260200101519150915060008684600101815181106134a157fe5b602002602001015190506000600287510385106134be57856134ff565b6134ff7f0000000000000000000000000000000000000000000000000000000000000000848988600201815181106134f257fe5b6020026020010151613692565b905061352c7f00000000000000000000000000000000000000000000000000000000000000008585613692565b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9190911690631c6da724906135919085908590602481016155d9565b600060405180830381600087803b1580156135ab57600080fd5b505af11580156135bf573d6000803e3d6000fd5b505060019096019550613452945050505050565b50505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516136109190614dcc565b60006040518083038185875af1925050503d806000811461364d576040519150601f19603f3d011682016040523d82523d6000602084013e613652565b606091505b505090508061368d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615425565b505050565b60008383836040516020016136a8929190614d92565b604051602081830303815290604052805190602001206040516020016136cf929190614de8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6060600282101561374a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff8111801561376157600080fd5b5060405190808252806020026020018201604052801561378b578160200160208202803683370190505b509050838160018351038151811061379f57fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b801561388c57600080613825888787600187038181106137ea57fe5b90506020020160208101906137ff9190614686565b88888781811061380b57fe5b90506020020160208101906138209190614686565b6144f2565b50509150915061384984848151811061383a57fe5b60200260200101518383613ca7565b84600185038151811061385857fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016137ce565b50949350505050565b60005b600183510381101561368d576000808483815181106138b357fe5b60200260200101518584600101815181106138ca57fe5b60200260200101519150915060006139037f00000000000000000000000000000000000000000000000000000000000000008484613692565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561395157600080fd5b505afa158015613965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139899190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506139ec828873ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b93506139f98483836130f8565b92505050600060028951038710613a105787613a44565b613a447f0000000000000000000000000000000000000000000000000000000000000000868b8a600201815181106134f257fe5b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915290915073ffffffffffffffffffffffffffffffffffffffff851690631c6da72490613aaa9085908590602481016155d9565b600060405180830381600087803b158015613ac457600080fd5b505af1158015613ad8573d6000803e3d6000fd5b5050600190980197506138989650505050505050565b80820382811115613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990614fd1565b92915050565b600060606002831015613b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff81118015613b8757600080fd5b50604051908082528060200260200182016040528015613bb1578160200160208202803683370190505b5090508481600183510381518110613bc557fe5b60209081029190910101526000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85015b8015613c9b57613c3189888860018503818110613c1057fe5b9050602002016020810190613c259190614686565b8989858181106132ac57fe5b86519097509194509250613c5a90859083908110613c4b57fe5b60200260200101518484613ca7565b846001830381518110613c6957fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613bf7565b50505094509492505050565b6000808411613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615482565b600083118015613cf25750600082115b613d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b6000613d348486613f1c565b90506000613d428487613aee565b905080613d4f83826142c6565b8161319e57fe5b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613d89929190614f67565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613dd79190614dcc565b6000604051808303816000865af19150503d8060008114613e14576040519150601f19603f3d011682016040523d82523d6000602084013e613e19565b606091505b5091509150818015613e43575080511580613e43575080806020019051810190613e439190614b35565b613e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615008565b5050505050565b6000808411613ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615269565b600083118015613ecb5750600082115b613f01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b82613f0c8584613f1c565b81613f1357fe5b04949350505050565b6000811580613f3757505080820282828281613f3457fe5b04145b613b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150e4565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390588886040518363ffffffff1660e01b8152600401613fcd929190614f09565b60206040518083038186803b158015613fe557600080fd5b505afa158015613ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401d91906146a9565b905073ffffffffffffffffffffffffffffffffffffffff811661406c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615599565b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b1580156140b557600080fd5b505afa1580156140c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ed9190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150816000148015614121575080155b1561413157869450859350614173565b600061413e888484613e80565b905086811161415257879550935083614171565b600061415f888486613e80565b90508881111561416b57fe5b95508694505b505b50509450945094915050565b606060028210156141bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff811180156141d357600080fd5b506040519080825280602002602001820160405280156141fd578160200160208202803683370190505b509050838160008151811061420e57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830181101561388c5760008061427e8887878681811061425a57fe5b905060200201602081019061426f9190614686565b88888760010181811061380b57fe5b5050915091506142a284848151811061429357fe5b602002602001015183836130f8565b8484600101815181106142b157fe5b6020908102919091010152505060010161421d565b80820182811015613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615178565b60008060006143138686866144f2565b5091945092509050600080808061432b8a898b6144f2565b9296509094509250905060006143418886613f1c565b9050600061434f8886613f1c565b905061435b8184613f1c565b61436783612710613f1c565b11156144e35760006143798383613aee565b90506000614392600261438c8d8a6142c6565b90613f1c565b905060006143a5600261438c8d8c6142c6565b90506143bc8e8b898487816143b657fe5b04613322565b6143cb8d888c8587816143b657fe5b8973ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561441257600080fd5b505af1158015614426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061444a9190614b51565b50508673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561449357600080fd5b505af11580156144a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144cb9190614b51565b50506144d88f8f8f6144f2565b50919d509b50505050505b50505050505093509350939050565b600080600080614503878787613692565b91508173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561454b57600080fd5b505afa15801561455f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145839190614b7f565b6dffffffffffffffffffffffffffff9384169b9290931699509397509095509350505050565b6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b8051613b2b816156a3565b60008083601f8401126145f8578182fd5b50813567ffffffffffffffff81111561460f578182fd5b602083019150836020808302850101111561462957600080fd5b9250929050565b805160068110613b2b57600080fd5b80516dffffffffffffffffffffffffffff81168114613b2b57600080fd5b805167ffffffffffffffff81168114613b2b57600080fd5b803560ff81168114613b2b57600080fd5b600060208284031215614697578081fd5b81356146a2816156a3565b9392505050565b6000602082840312156146ba578081fd5b81516146a2816156a3565b600080604083850312156146d7578081fd5b82516146e2816156a3565b60208401519092506146f3816156a3565b809150509250929050565b600080600080600080600060e0888a031215614718578283fd5b8735614723816156a3565b96506020880135614733816156a3565b955060408801359450606088013593506080880135925060a0880135614758816156a3565b8092505060c0880135905092959891949750929550565b60008060008060008060008060008060006101608c8e031215614790578384fd5b8b3561479b816156a3565b9a5060208c01356147ab816156a3565b995060408c0135985060608c0135975060808c0135965060a08c01356147d0816156a3565b955060c08c0135945060e08c01356147e7816156c8565b93506147f78d6101008e01614675565b92506101208c013591506101408c013590509295989b509295989b9093969950565b600080600080600080600080610100898b031215614835578384fd5b8835614840816156a3565b97506020890135614850816156a3565b965060408901359550606089013594506080890135935060a0890135925060c089013561487c816156a3565b8092505060e089013590509295985092959890939650565b60008082840360e08112156148a7578283fd5b83516148b2816156a3565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156148e3578182fd5b5060405160c0810181811067ffffffffffffffff82111715614903578283fd5b60405261491385602086016145dc565b815261492285604086016145dc565b60208201526060840151604082015261493e856080860161465d565b60608201526149508560a0860161465d565b60808201526149628560c08601614630565b60a0820152809150509250929050565b600080600080600060a08688031215614989578283fd5b8535614994816156a3565b9450602086013593506040860135925060608601356149b2816156a3565b949793965091946080013592915050565b60008060008060008060008060006101208a8c0312156149e1578283fd5b89356149ec816156a3565b985060208a0135975060408a0135965060608a0135614a0a816156a3565b955060808a0135945060a08a0135614a21816156c8565b9350614a308b60c08c01614675565b925060e08a013591506101008a013590509295985092959850929598565b6000806000806000806000806000806101408b8d031215614a6d578384fd5b8a35614a78816156a3565b995060208b0135985060408b0135975060608b0135965060808b0135614a9d816156a3565b955060a08b0135945060c08b0135614ab4816156c8565b9350614ac38c60e08d01614675565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215614afe578081fd5b8735614b09816156a3565b96506020880135955060408801359450606088013593506080880135925060a0880135614758816156a3565b600060208284031215614b46578081fd5b81516146a2816156c8565b60008060408385031215614b63578182fd5b8251614b6e816156d6565b60208401519092506146f3816156d6565b60008060008060808587031215614b94578182fd5b614b9e868661463f565b9350614bad866020870161463f565b9250604085015163ffffffff81168114614bc5578283fd5b6060959095015193969295505050565b600060208284031215614be6578081fd5b5051919050565b600080600060608486031215614c01578081fd5b833592506020840135614c13816156a3565b929592945050506040919091013590565b600080600060408486031215614c38578081fd5b83359250602084013567ffffffffffffffff811115614c55578182fd5b614c61868287016145e7565b9497909650939450505050565b600080600080600060808688031215614c85578283fd5b85359450602086013567ffffffffffffffff811115614ca2578384fd5b614cae888289016145e7565b9095509350506040860135614cc2816156a3565b949793965091946060013592915050565b60008060408385031215614ce5578182fd5b505080516020909101519092909150565b60008060008060008060a08789031215614d0e578384fd5b8635955060208701359450604087013567ffffffffffffffff811115614d32578485fd5b614d3e89828a016145e7565b9095509350506060870135614d52816156a3565b80925050608087013590509295509295509295565b600080600060608486031215614d7b578081fd5b505081359360208301359350604090920135919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614dde818460208701615677565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527fbaeae6b526d52ab9edea88a8a5991ed61443a0c4d6bea03dc99971664961f4b7603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614fc557835183529284019291840191600101614fa9565b50909695505050505050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f466553776170526f757465723a20494e56414c49445f50415448000000000000604082015260600190565b60208082526015908201527f466553776170526f757465723a20455850495245440000000000000000000000604082015260600190565b60208082526013908201527f4665537761703a204e4f5420414c4c4f57454400000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526025908201527f4665537761704c6962726172793a20494e53554646494349454e545f4c49515560408201527f4944495459000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526028908201527f4665537761704c6962726172793a20494e53554646494349454e545f494e505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f466553776170526f757465723a20494e53554646494349454e545f4f5554505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4665537761704c6962726172793a20494e53554646494349454e545f414d4f5560408201527f4e54000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4665537761704c6962726172793a20494e56414c49445f504154480000000000604082015260600190565b60208082526024908201527f466553776170526f757465723a204558434553534956455f494e5055545f414d60408201527f4f554e5400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4665537761703a204e4f5420544f4b454e204f574e4552000000000000000000604082015260600190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f425f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526011908201527f4665537761703a20524154494f20454552000000000000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4665537761704c6962726172793a20494e53554646494349454e545f4f55545060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f415f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f4665537761703a204e4f54204352454154454400000000000000000000000000604082015260600190565b90815260200190565b600084825273ffffffffffffffffffffffffffffffffffffffff8416602083015260606040830152825180606084015261561a816080850160208701615677565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b60005b8381101561569257818101518382015260200161567a565b838111156135d35750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146156c557600080fd5b50565b80151581146156c557600080fd5b6dffffffffffffffffffffffffffff811681146156c557600080fdfea264697066735822122041f4b4957e4772e5653c3c9221462bccc6b173672ddcc040d0b30600931cbb8764736f6c634300060c0033",
          "opcodes": "PUSH1 0xE0 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0x5920 CODESIZE SUB DUP1 PUSH3 0x5920 DUP4 CODECOPY DUP2 ADD PUSH1 0x40 DUP2 SWAP1 MSTORE PUSH3 0x34 SWAP2 PUSH3 0x5C JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0x60 SHL SUB NOT PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND PUSH1 0x80 MSTORE SWAP2 DUP4 SHL DUP3 AND PUSH1 0xA0 MSTORE SWAP1 SWAP2 SHL AND PUSH1 0xC0 MSTORE PUSH3 0xC8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH3 0x71 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH3 0x7E DUP2 PUSH3 0xAF JUMP JUMPDEST PUSH1 0x20 DUP6 ADD MLOAD SWAP1 SWAP4 POP PUSH3 0x91 DUP2 PUSH3 0xAF JUMP JUMPDEST PUSH1 0x40 DUP6 ADD MLOAD SWAP1 SWAP3 POP PUSH3 0xA4 DUP2 PUSH3 0xAF JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 POP SWAP3 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP2 AND DUP2 EQ PUSH3 0xC5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST PUSH1 0x80 MLOAD PUSH1 0x60 SHR PUSH1 0xA0 MLOAD PUSH1 0x60 SHR PUSH1 0xC0 MLOAD PUSH1 0x60 SHR PUSH2 0x5728 PUSH3 0x1F8 PUSH1 0x0 CODECOPY DUP1 PUSH2 0x1C2 MSTORE DUP1 PUSH2 0x5A9 MSTORE DUP1 PUSH2 0x762 MSTORE DUP1 PUSH2 0xDD8 MSTORE DUP1 PUSH2 0xF36 MSTORE DUP1 PUSH2 0x12CA MSTORE DUP1 PUSH2 0x13F7 MSTORE DUP1 PUSH2 0x148C MSTORE DUP1 PUSH2 0x16AC MSTORE DUP1 PUSH2 0x17C6 MSTORE DUP1 PUSH2 0x1C58 MSTORE DUP1 PUSH2 0x1D96 MSTORE DUP1 PUSH2 0x1E94 MSTORE DUP1 PUSH2 0x1F07 MSTORE DUP1 PUSH2 0x1F7A MSTORE DUP1 PUSH2 0x1FF1 MSTORE DUP1 PUSH2 0x234C MSTORE DUP1 PUSH2 0x23F7 MSTORE DUP1 PUSH2 0x2478 MSTORE DUP1 PUSH2 0x2712 MSTORE DUP1 PUSH2 0x28B0 MSTORE DUP1 PUSH2 0x29DA MSTORE DUP1 PUSH2 0x2A6F MSTORE DUP1 PUSH2 0x2C39 MSTORE DUP1 PUSH2 0x2C9A MSTORE DUP1 PUSH2 0x2D53 MSTORE DUP1 PUSH2 0x2E9D MSTORE DUP1 PUSH2 0x2EDD MSTORE DUP1 PUSH2 0x2F96 MSTORE POP DUP1 PUSH2 0x1088 MSTORE DUP1 PUSH2 0x2821 MSTORE POP DUP1 PUSH2 0x660 MSTORE DUP1 PUSH2 0x839 MSTORE DUP1 PUSH2 0x951 MSTORE DUP1 PUSH2 0x9BC MSTORE DUP1 PUSH2 0xAF1 MSTORE DUP1 PUSH2 0xE8F MSTORE DUP1 PUSH2 0xF14 MSTORE DUP1 PUSH2 0x11EF MSTORE DUP1 PUSH2 0x1375 MSTORE DUP1 PUSH2 0x15EC MSTORE DUP1 PUSH2 0x188E MSTORE DUP1 PUSH2 0x1A17 MSTORE DUP1 PUSH2 0x22ED MSTORE DUP1 PUSH2 0x24B7 MSTORE DUP1 PUSH2 0x26F0 MSTORE DUP1 PUSH2 0x284A MSTORE DUP1 PUSH2 0x295B MSTORE DUP1 PUSH2 0x34C3 MSTORE DUP1 PUSH2 0x3506 MSTORE DUP1 PUSH2 0x38DD MSTORE DUP1 PUSH2 0x3A15 MSTORE DUP1 PUSH2 0x3F74 MSTORE POP PUSH2 0x5728 PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96ADB337 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xEAD86A29 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xEAD86A29 EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xEEF40F31 EQ PUSH2 0x4F1 JUMPI DUP1 PUSH4 0xFB3BDB41 EQ PUSH2 0x511 JUMPI DUP1 PUSH4 0xFFBCF7F3 EQ PUSH2 0x524 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xD57B57A5 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0xDED9382A EQ PUSH2 0x4BC JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0xAD615DEC GT PUSH2 0xBB JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xBA3690CB EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0xBA9F20B8 EQ PUSH2 0x464 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x96ADB337 EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xA59600DB EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x402 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A GT PUSH2 0x14E JUMPI DUP1 PUSH4 0x7FF36AB5 GT PUSH2 0x128 JUMPI DUP1 PUSH4 0x7FF36AB5 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0x8DE9D7D2 EQ PUSH2 0x3A2 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x573692C1 EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x6A055FA9 EQ PUSH2 0x321 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x2E1DB143 GT PUSH2 0x17F JUMPI DUP1 PUSH4 0x2E1DB143 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x3D221B20 EQ PUSH2 0x2C1 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x18CBAFE5 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x253 JUMPI PUSH2 0x1EB JUMP JUMPDEST CALLDATASIZE PUSH2 0x1EB JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1E9 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x20B CALLDATASIZE PUSH1 0x4 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0x537 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP2 SWAP1 PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x241 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP2 SWAP1 PUSH2 0x4F8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x476F JUMP JUMPDEST PUSH2 0x82F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP3 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x29C CALLDATASIZE PUSH1 0x4 PUSH2 0x4C24 JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x2BC CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x978 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH2 0x2DC CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0xA8B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x2FC CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0xD84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x31C CALLDATASIZE PUSH1 0x4 PUSH2 0x49C3 JUMP JUMPDEST PUSH2 0xF0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x4BED JUMP JUMPDEST PUSH2 0x103E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP3 SWAP2 SWAP1 PUSH2 0x4F09 JUMP JUMPDEST PUSH2 0x246 PUSH2 0x35D CALLDATASIZE PUSH1 0x4 PUSH2 0x4C6E JUMP JUMPDEST PUSH2 0x128B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0x159B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x15A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE4 JUMP JUMPDEST PUSH2 0x1669 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x4819 JUMP JUMPDEST PUSH2 0x1843 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH2 0x3FD CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 PUSH2 0x1F05 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x43F CALLDATASIZE PUSH1 0x4 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0x1F29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x45F CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE4 JUMP JUMPDEST PUSH2 0x1F36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x484 PUSH2 0x47F CALLDATASIZE PUSH1 0x4 PUSH2 0x46FE JUMP JUMPDEST PUSH2 0x206F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x565C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 PUSH2 0x22EB JUMP JUMPDEST PUSH2 0x1E9 PUSH2 0x4B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C6E JUMP JUMPDEST PUSH2 0x230F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x4D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A4E JUMP JUMPDEST PUSH2 0x26E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 PUSH2 0x281F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x50C CALLDATASIZE PUSH1 0x4 PUSH2 0x4C24 JUMP JUMPDEST PUSH2 0x2843 JUMP JUMPDEST PUSH2 0x246 PUSH2 0x51F CALLDATASIZE PUSH1 0x4 PUSH2 0x4C6E JUMP JUMPDEST PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x484 PUSH2 0x532 CALLDATASIZE PUSH1 0x4 PUSH2 0x4972 JUMP JUMPDEST PUSH2 0x2BAF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x544 DUP5 DUP5 DUP5 PUSH2 0x30F8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x592 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x5F7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x60C SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x687 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x31A9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x6A0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST PUSH2 0x721 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x6F0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x705 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST CALLER DUP4 DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x714 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3322 JUMP JUMPDEST PUSH2 0x760 DUP4 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x344F SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x7AC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D0 SWAP2 SWAP1 PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x823 DUP6 DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x816 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x35D9 JUMP JUMPDEST POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x85F PUSH32 0x0 DUP16 DUP16 PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x86E JUMPI DUP13 PUSH2 0x890 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x8F1 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP16 SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x91F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x936 DUP14 DUP14 DUP14 PUSH1 0x0 DUP15 DUP15 DUP15 DUP15 PUSH2 0x1843 JUMP JUMPDEST SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x544 PUSH32 0x0 DUP6 DUP6 DUP6 PUSH2 0x370D JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E3 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x31A9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x9FC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xA3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST PUSH2 0xA4C DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x6F0 JUMPI INVALID JUMPDEST PUSH2 0x823 DUP4 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP11 SWAP3 POP PUSH2 0x344F SWAP2 POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH2 0xB5F DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xAD6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xAEB SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST CALLER PUSH2 0xB59 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xB1D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xB32 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xB3F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xB54 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH2 0x3692 JUMP JUMPDEST DUP11 PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0xB8F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xBA4 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBDC SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2C SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP1 POP PUSH2 0xC6C DUP7 DUP7 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x3895 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0xD42 DUP3 DUP9 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0xC9F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xCB4 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCEC SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD18 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD3C SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP1 PUSH2 0x3AEE JUMP JUMPDEST LT ISZERO PUSH2 0xD7A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xDC1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0xE26 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xE3B SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE88 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB6 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x3B31 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xECC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52FD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF5A PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0xF69 JUMPI DUP11 PUSH2 0xF8B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0xFEC SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP15 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1006 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x101A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x102E DUP13 DUP13 DUP13 PUSH1 0x0 DUP1 DUP15 DUP15 PUSH2 0x1669 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x104B PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F380B3500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2F380B35 SWAP1 PUSH2 0x10BD SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x110D SWAP2 SWAP1 PUSH2 0x4894 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EQ PUSH2 0x1161 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x535A JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0xA0 ADD MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1173 JUMPI INVALID JUMPDEST LT ISZERO PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x50AD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x883D273000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x883D2730 SWAP1 PUSH2 0x122A SWAP1 DUP6 SWAP1 DUP6 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0x4F30 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1257 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x127B SWAP2 SWAP1 PUSH2 0x46C5 JUMP JUMPDEST SWAP1 SWAP11 SWAP1 SWAP10 POP SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x12C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x130C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1321 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x136E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x139C PUSH32 0x0 CALLVALUE DUP10 DUP10 PUSH2 0x31A9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x13B5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x13F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x143E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1485 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x14D4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14F9 SWAP3 SWAP2 SWAP1 PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1527 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x154B SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x1551 JUMPI INVALID JUMPDEST PUSH2 0x1590 DUP4 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP11 SWAP3 POP PUSH2 0x344F SWAP2 POP POP JUMP JUMPDEST POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x544 DUP5 DUP5 DUP5 PUSH2 0x3CA7 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x15E5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1613 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x3B31 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1629 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xA3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52FD JUMP JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x16A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH2 0x16D6 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x1843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH2 0x1789 SWAP2 POP DUP11 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1734 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1760 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1784 SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST PUSH2 0x3D56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x17FB SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1829 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1837 DUP5 DUP4 PUSH2 0x35D9 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1881 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST DUP9 ISZERO PUSH2 0x1A0A JUMPI PUSH1 0x0 PUSH2 0x18B4 PUSH32 0x0 DUP14 DUP14 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x190D SWAP1 CALLER SWAP1 DUP6 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ED8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x193B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x195F SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x89AFCB44 SWAP1 PUSH2 0x19B2 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A03 SWAP2 SWAP1 PUSH2 0x4CD3 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP JUMPDEST DUP8 ISZERO PUSH2 0x1B84 JUMPI PUSH1 0x0 PUSH2 0x1A3D PUSH32 0x0 DUP13 DUP15 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x1A96 SWAP1 CALLER SWAP1 DUP6 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ED8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AE8 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST POP PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x89AFCB44 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B25 SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B76 SWAP2 SWAP1 PUSH2 0x4CD3 JUMP JUMPDEST SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP5 SWAP1 SWAP5 ADD SWAP4 POP POP POP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x1BBE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x54DF JUMP JUMPDEST DUP6 DUP3 LT ISZERO PUSH2 0x1BF8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5391 JUMP JUMPDEST POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1C41 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1CA6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CBB SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH2 0x1D18 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xAD6 JUMPI INVALID JUMPDEST PUSH2 0x1D56 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3895 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1DCB SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E1B SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x1E57 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1EC9 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xD7A DUP5 DUP3 PUSH2 0x35D9 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x544 DUP5 DUP5 DUP5 PUSH2 0x3E80 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1F74 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH2 0x1FA4 DUP11 PUSH32 0x0 DUP12 DUP12 DUP12 DUP12 ADDRESS DUP12 PUSH2 0x1843 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x1FB4 DUP11 DUP7 DUP6 PUSH2 0x3D56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x2026 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2040 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2054 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2062 DUP6 DUP4 PUSH2 0x35D9 JUMP JUMPDEST POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 TIMESTAMP DUP2 LT ISZERO PUSH2 0x20B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x64 DUP9 GT ISZERO PUSH2 0x20EB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x53EE JUMP JUMPDEST DUP8 ISZERO PUSH2 0x21F2 JUMPI PUSH1 0x0 PUSH1 0x64 PUSH2 0x20FF DUP13 DUP12 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x2106 JUMPI INVALID JUMPDEST DIV SWAP4 POP PUSH1 0x64 PUSH2 0x2115 DUP12 DUP12 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x211C JUMPI INVALID JUMPDEST DIV SWAP3 POP PUSH2 0x212B DUP14 DUP14 DUP7 DUP7 PUSH2 0x3F6D JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP PUSH2 0x213E DUP14 CALLER DUP4 DUP10 PUSH2 0x3322 JUMP JUMPDEST PUSH2 0x214A DUP13 CALLER DUP4 DUP9 PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x219C SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21EE SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP4 POP POP JUMPDEST PUSH1 0x64 DUP9 EQ PUSH2 0x22DC JUMPI PUSH1 0x0 PUSH2 0x220C DUP13 DUP15 DUP8 DUP14 SUB DUP10 DUP16 SUB PUSH2 0x3F6D JUMP JUMPDEST SWAP1 SWAP13 POP SWAP1 SWAP11 POP SWAP1 POP PUSH2 0x2220 DUP14 CALLER DUP4 DUP15 PUSH2 0x3322 JUMP JUMPDEST PUSH2 0x222C DUP13 CALLER DUP4 DUP14 PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x227E SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22D0 SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP6 DUP12 ADD SWAP6 SWAP5 DUP11 ADD SWAP5 SWAP3 POP POP JUMPDEST POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x234A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x238E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x23A3 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x23F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x245D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2471 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x24E3 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xB1D JUMPI INVALID JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2501 SWAP3 SWAP2 SWAP1 PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x251B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x252F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2553 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x2559 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2589 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x259E SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x25D6 SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2602 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2626 SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2666 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3895 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0xD42 DUP3 DUP10 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2699 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x26AE SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCEC SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2736 PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x2745 JUMPI DUP13 PUSH2 0x2767 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x27C8 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP16 SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x280A DUP15 DUP15 PUSH1 0x0 DUP16 DUP16 DUP16 DUP16 PUSH2 0x1F36 JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x544 PUSH32 0x0 DUP6 DUP6 DUP6 PUSH2 0x417F JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x28AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x28F2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2907 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2954 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2982 PUSH32 0x0 DUP10 DUP10 DUP10 PUSH2 0x3B31 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP CALLVALUE DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2998 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x29D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52FD JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2A21 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2AB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2ADC SWAP3 SWAP2 SWAP1 PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B2E SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x2B34 JUMPI INVALID JUMPDEST PUSH2 0x2B73 DUP4 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP11 SWAP3 POP PUSH2 0x344F SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B80 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x1590 JUMPI PUSH2 0x1590 CALLER DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2BA0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x35D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2BF0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x64 DUP9 GT ISZERO PUSH2 0x2C2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x53EE JUMP JUMPDEST DUP8 ISZERO PUSH2 0x2E8D JUMPI PUSH1 0x0 PUSH2 0x2C85 DUP12 PUSH32 0x0 PUSH1 0x64 PUSH2 0x2C64 DUP15 DUP15 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x2C6B JUMPI INVALID JUMPDEST DIV PUSH1 0x64 PUSH2 0x2C78 CALLVALUE DUP16 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x2C7F JUMPI INVALID JUMPDEST DIV PUSH2 0x3F6D JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP PUSH2 0x2C98 DUP12 CALLER DUP4 DUP10 PUSH2 0x3322 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP4 POP PUSH4 0xA9059CBB SWAP3 POP PUSH2 0x2D8D SWAP2 POP DUP5 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DDF SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x2DE5 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x2E37 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E65 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E89 SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP4 POP POP JUMPDEST PUSH1 0x64 DUP9 EQ PUSH2 0x30D7 JUMPI PUSH1 0x0 DUP1 PUSH2 0x2EC8 PUSH32 0x0 DUP14 DUP9 CALLVALUE SUB DUP11 DUP16 SUB PUSH2 0x3F6D JUMP JUMPDEST SWAP1 SWAP13 POP SWAP3 POP SWAP1 POP PUSH2 0x2EDB DUP13 CALLER DUP5 DUP15 PUSH2 0x3322 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP4 POP PUSH4 0xA9059CBB SWAP3 POP PUSH2 0x2FD0 SWAP2 POP DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3022 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x3028 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x307A SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3094 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x30CC SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP7 DUP12 ADD SWAP7 SWAP6 ADD SWAP5 SWAP3 POP POP JUMPDEST DUP4 CALLVALUE GT ISZERO PUSH2 0x30EB JUMPI PUSH2 0x30EB CALLER DUP6 CALLVALUE SUB PUSH2 0x35D9 JUMP JUMPDEST POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3133 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x51AF JUMP JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3143 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3179 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x511B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3185 DUP6 DUP5 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3193 DUP6 DUP8 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x319E JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x31E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52C6 JUMP JUMPDEST DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x31FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3229 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x323A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 ADD DUP2 LT ISZERO PUSH2 0x3318 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x32C6 DUP11 DUP10 DUP10 DUP8 DUP2 DUP2 LT PUSH2 0x3288 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x329D SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP11 DUP11 DUP9 PUSH1 0x1 ADD DUP2 DUP2 LT PUSH2 0x32AC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x32C1 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH2 0x4303 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x32EA DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x32DB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 PUSH2 0x30F8 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x32F9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP4 PUSH2 0x330D JUMPI DUP1 SWAP6 POP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x3249 JUMP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3357 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4ED8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x33A5 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x33E2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x33E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3411 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3411 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3411 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x3447 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x553C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x35D3 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x346D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3484 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 DUP7 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x34A1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x2 DUP8 MLOAD SUB DUP6 LT PUSH2 0x34BE JUMPI DUP6 PUSH2 0x34FF JUMP JUMPDEST PUSH2 0x34FF PUSH32 0x0 DUP5 DUP10 DUP9 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x34F2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH2 0x352C PUSH32 0x0 DUP6 DUP6 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH32 0x1C6DA72400000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x1C6DA724 SWAP1 PUSH2 0x3591 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x24 DUP2 ADD PUSH2 0x55D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP7 ADD SWAP6 POP PUSH2 0x3452 SWAP5 POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x3610 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x364D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3652 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x368D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5425 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x36A8 SWAP3 SWAP2 SWAP1 PUSH2 0x4D92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x36CF SWAP3 SWAP2 SWAP1 PUSH2 0x4DE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x374A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52C6 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x378B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x379F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP1 ISZERO PUSH2 0x388C JUMPI PUSH1 0x0 DUP1 PUSH2 0x3825 DUP9 DUP8 DUP8 PUSH1 0x1 DUP8 SUB DUP2 DUP2 LT PUSH2 0x37EA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x37FF SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP9 DUP9 DUP8 DUP2 DUP2 LT PUSH2 0x380B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3820 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH2 0x44F2 JUMP JUMPDEST POP POP SWAP2 POP SWAP2 POP PUSH2 0x3849 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x383A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3CA7 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3858 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x37CE JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x368D JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x38B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x38CA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x3903 PUSH32 0x0 DUP5 DUP5 PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3965 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3989 SWAP2 SWAP1 PUSH2 0x4B7F JUMP JUMPDEST POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x39EC DUP3 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCEC SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST SWAP4 POP PUSH2 0x39F9 DUP5 DUP4 DUP4 PUSH2 0x30F8 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x2 DUP10 MLOAD SUB DUP8 LT PUSH2 0x3A10 JUMPI DUP8 PUSH2 0x3A44 JUMP JUMPDEST PUSH2 0x3A44 PUSH32 0x0 DUP7 DUP12 DUP11 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x34F2 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH32 0x1C6DA72400000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x1C6DA724 SWAP1 PUSH2 0x3AAA SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x24 DUP2 ADD PUSH2 0x55D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP9 ADD SWAP8 POP PUSH2 0x3898 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3B2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x4FD1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x3B70 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52C6 JUMP JUMPDEST DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3BB1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP5 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x3BC5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x0 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 ADD JUMPDEST DUP1 ISZERO PUSH2 0x3C9B JUMPI PUSH2 0x3C31 DUP10 DUP9 DUP9 PUSH1 0x1 DUP6 SUB DUP2 DUP2 LT PUSH2 0x3C10 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3C25 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x32AC JUMPI INVALID JUMPDEST DUP7 MLOAD SWAP1 SWAP8 POP SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x3C5A SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x3C4B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 PUSH2 0x3CA7 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3C69 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x3BF7 JUMP JUMPDEST POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3CE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5482 JUMP JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3CF2 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3D28 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x511B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D34 DUP5 DUP7 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D42 DUP5 DUP8 PUSH2 0x3AEE JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3D4F DUP4 DUP3 PUSH2 0x42C6 JUMP JUMPDEST DUP2 PUSH2 0x319E JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3D89 SWAP3 SWAP2 SWAP1 PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x3DD7 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3E14 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E19 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3E43 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3E43 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3E43 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x3E79 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5008 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3EBB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5269 JUMP JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3ECB JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3F01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x511B JUMP JUMPDEST DUP3 PUSH2 0x3F0C DUP6 DUP5 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x3F13 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x3F37 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x3F34 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x3B2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x50E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP9 DUP9 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3FCD SWAP3 SWAP2 SWAP1 PUSH2 0x4F09 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3FF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x401D SWAP2 SWAP1 PUSH2 0x46A9 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x406C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5599 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x40C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x40ED SWAP2 SWAP1 PUSH2 0x4B7F JUMP JUMPDEST POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x4121 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x4131 JUMPI DUP7 SWAP5 POP DUP6 SWAP4 POP PUSH2 0x4173 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x413E DUP9 DUP5 DUP5 PUSH2 0x3E80 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 GT PUSH2 0x4152 JUMPI DUP8 SWAP6 POP SWAP4 POP DUP4 PUSH2 0x4171 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415F DUP9 DUP5 DUP7 PUSH2 0x3E80 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 GT ISZERO PUSH2 0x416B JUMPI INVALID JUMPDEST SWAP6 POP DUP7 SWAP5 POP JUMPDEST POP JUMPDEST POP POP SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x41BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52C6 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x41FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x420E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DUP2 LT ISZERO PUSH2 0x388C JUMPI PUSH1 0x0 DUP1 PUSH2 0x427E DUP9 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x425A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x426F SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP9 DUP9 DUP8 PUSH1 0x1 ADD DUP2 DUP2 LT PUSH2 0x380B JUMPI INVALID JUMPDEST POP POP SWAP2 POP SWAP2 POP PUSH2 0x42A2 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4293 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x30F8 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x42B1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x421D JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3B2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5178 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4313 DUP7 DUP7 DUP7 PUSH2 0x44F2 JUMP JUMPDEST POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x432B DUP11 DUP10 DUP12 PUSH2 0x44F2 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x4341 DUP9 DUP7 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x434F DUP9 DUP7 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH2 0x435B DUP2 DUP5 PUSH2 0x3F1C JUMP JUMPDEST PUSH2 0x4367 DUP4 PUSH2 0x2710 PUSH2 0x3F1C JUMP JUMPDEST GT ISZERO PUSH2 0x44E3 JUMPI PUSH1 0x0 PUSH2 0x4379 DUP4 DUP4 PUSH2 0x3AEE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4392 PUSH1 0x2 PUSH2 0x438C DUP14 DUP11 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x43A5 PUSH1 0x2 PUSH2 0x438C DUP14 DUP13 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 POP PUSH2 0x43BC DUP15 DUP12 DUP10 DUP5 DUP8 DUP2 PUSH2 0x43B6 JUMPI INVALID JUMPDEST DIV PUSH2 0x3322 JUMP JUMPDEST PUSH2 0x43CB DUP14 DUP9 DUP13 DUP6 DUP8 DUP2 PUSH2 0x43B6 JUMPI INVALID JUMPDEST DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFFF6CAE9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4426 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x444A SWAP2 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST POP POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFFF6CAE9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x44CB SWAP2 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST POP POP PUSH2 0x44D8 DUP16 DUP16 DUP16 PUSH2 0x44F2 JUMP JUMPDEST POP SWAP2 SWAP14 POP SWAP12 POP POP POP POP POP JUMPDEST POP POP POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4503 DUP8 DUP8 DUP8 PUSH2 0x3692 JUMP JUMPDEST SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x454B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x455F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4583 SWAP2 SWAP1 PUSH2 0x4B7F JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP12 SWAP3 SWAP1 SWAP4 AND SWAP10 POP SWAP4 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3B2B DUP2 PUSH2 0x56A3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x45F8 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x460F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4629 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x6 DUP2 LT PUSH2 0x3B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4697 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x46A2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46BA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x46A2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46D7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x46E2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x46F3 DUP2 PUSH2 0x56A3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4718 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4723 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4733 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x4758 DUP2 PUSH2 0x56A3 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x4790 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP12 CALLDATALOAD PUSH2 0x479B DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD PUSH2 0x47AB DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP10 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP9 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP8 POP PUSH1 0x80 DUP13 ADD CALLDATALOAD SWAP7 POP PUSH1 0xA0 DUP13 ADD CALLDATALOAD PUSH2 0x47D0 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP6 POP PUSH1 0xC0 DUP13 ADD CALLDATALOAD SWAP5 POP PUSH1 0xE0 DUP13 ADD CALLDATALOAD PUSH2 0x47E7 DUP2 PUSH2 0x56C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x47F7 DUP14 PUSH2 0x100 DUP15 ADD PUSH2 0x4675 JUMP JUMPDEST SWAP3 POP PUSH2 0x120 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x140 DUP13 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4835 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x4840 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x4850 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH2 0x487C DUP2 PUSH2 0x56A3 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0xE0 DUP2 SLT ISZERO PUSH2 0x48A7 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x48B2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x48E3 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4903 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x4913 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x45DC JUMP JUMPDEST DUP2 MSTORE PUSH2 0x4922 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x45DC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x493E DUP6 PUSH1 0x80 DUP7 ADD PUSH2 0x465D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4950 DUP6 PUSH1 0xA0 DUP7 ADD PUSH2 0x465D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x4962 DUP6 PUSH1 0xC0 DUP7 ADD PUSH2 0x4630 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4989 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4994 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x49B2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x49E1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH2 0x49EC DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP11 ADD CALLDATALOAD SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0x4A0A DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP11 ADD CALLDATALOAD SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH2 0x4A21 DUP2 PUSH2 0x56C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x4A30 DUP12 PUSH1 0xC0 DUP13 ADD PUSH2 0x4675 JUMP JUMPDEST SWAP3 POP PUSH1 0xE0 DUP11 ADD CALLDATALOAD SWAP2 POP PUSH2 0x100 DUP11 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x4A6D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH2 0x4A78 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH1 0x40 DUP12 ADD CALLDATALOAD SWAP8 POP PUSH1 0x60 DUP12 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD PUSH2 0x4A9D DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP6 POP PUSH1 0xA0 DUP12 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 DUP12 ADD CALLDATALOAD PUSH2 0x4AB4 DUP2 PUSH2 0x56C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x4AC3 DUP13 PUSH1 0xE0 DUP14 ADD PUSH2 0x4675 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4AFE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4B09 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x4758 DUP2 PUSH2 0x56A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B46 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x46A2 DUP2 PUSH2 0x56C8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B63 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4B6E DUP2 PUSH2 0x56D6 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x46F3 DUP2 PUSH2 0x56D6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B94 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4B9E DUP7 DUP7 PUSH2 0x463F JUMP JUMPDEST SWAP4 POP PUSH2 0x4BAD DUP7 PUSH1 0x20 DUP8 ADD PUSH2 0x463F JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4BC5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x60 SWAP6 SWAP1 SWAP6 ADD MLOAD SWAP4 SWAP7 SWAP3 SWAP6 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BE6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4C01 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4C13 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4C38 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C55 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4C61 DUP7 DUP3 DUP8 ADD PUSH2 0x45E7 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4C85 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4CA2 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x4CAE DUP9 DUP3 DUP10 ADD PUSH2 0x45E7 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4CC2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x60 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4CE5 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4D0E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D32 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x4D3E DUP10 DUP3 DUP11 ADD PUSH2 0x45E7 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x4D52 DUP2 PUSH2 0x56A3 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4D7B JUMPI DUP1 DUP2 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0x14 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4DDE DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5677 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x1 DUP4 ADD MSTORE PUSH1 0x15 DUP3 ADD MSTORE PUSH32 0xBAEAE6B526D52AB9EDEA88A8A5991ED61443A0C4D6BEA03DC99971664961F4B7 PUSH1 0x35 DUP3 ADD MSTORE PUSH1 0x55 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4FC5 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4FA9 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20494E56414C49445F50415448000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20455850495245440000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761703A204E4F5420414C4C4F57454400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E53554646494349454E545F4C495155 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4944495459000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E53554646494349454E545F494E5055 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x545F414D4F554E54000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20494E53554646494349454E545F4F55545055 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x545F414D4F554E54000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E53554646494349454E545F414D4F55 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4E54000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E56414C49445F504154480000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A204558434553534956455F494E5055545F414D PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4F554E5400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x17 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761703A204E4F5420544F4B454E204F574E4552000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20494E53554646494349454E545F425F414D4F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x554E540000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761703A20524154494F20454552000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A204554485F5452414E534645525F464149 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4C45440000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E53554646494349454E545F4F555450 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x55545F414D4F554E540000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20494E53554646494349454E545F415F414D4F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x554E540000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761703A204E4F54204352454154454400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x561A DUP2 PUSH1 0x80 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5677 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x80 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5692 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x567A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x35D3 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x56C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x56C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x56C5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE DELEGATECALL 0xB4 SWAP6 PUSH31 0x4772E5653C3C9221462BCCC6B173672DDCC040D0B30600931CBB8764736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "976:20304:3:-:0;;;1328:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1410:18:3;;;;;;;;1439:20;;;;;;;1470:12;;;;;;976:20304;;146:535:-1;;;;295:2;283:9;274:7;270:23;266:32;263:2;;;-1:-1;;301:12;263:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;464:2;514:22;;83:13;353:74;;-1:-1;101:33;83:13;101:33;:::i;:::-;583:2;633:22;;83:13;472:74;;-1:-1;101:33;83:13;101:33;:::i;:::-;591:74;;;;257:424;;;;;:::o;914:117::-;-1:-1;;;;;848:54;;973:35;;963:2;;1022:1;;1012:12;963:2;957:74;:::o;:::-;976:20304:3;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {
            "2246": [
              {
                "length": 32,
                "start": 1632
              },
              {
                "length": 32,
                "start": 2105
              },
              {
                "length": 32,
                "start": 2385
              },
              {
                "length": 32,
                "start": 2492
              },
              {
                "length": 32,
                "start": 2801
              },
              {
                "length": 32,
                "start": 3727
              },
              {
                "length": 32,
                "start": 3860
              },
              {
                "length": 32,
                "start": 4591
              },
              {
                "length": 32,
                "start": 4981
              },
              {
                "length": 32,
                "start": 5612
              },
              {
                "length": 32,
                "start": 6286
              },
              {
                "length": 32,
                "start": 6679
              },
              {
                "length": 32,
                "start": 8941
              },
              {
                "length": 32,
                "start": 9399
              },
              {
                "length": 32,
                "start": 9968
              },
              {
                "length": 32,
                "start": 10314
              },
              {
                "length": 32,
                "start": 10587
              },
              {
                "length": 32,
                "start": 13507
              },
              {
                "length": 32,
                "start": 13574
              },
              {
                "length": 32,
                "start": 14557
              },
              {
                "length": 32,
                "start": 14869
              },
              {
                "length": 32,
                "start": 16244
              }
            ],
            "2249": [
              {
                "length": 32,
                "start": 4232
              },
              {
                "length": 32,
                "start": 10273
              }
            ],
            "2252": [
              {
                "length": 32,
                "start": 450
              },
              {
                "length": 32,
                "start": 1449
              },
              {
                "length": 32,
                "start": 1890
              },
              {
                "length": 32,
                "start": 3544
              },
              {
                "length": 32,
                "start": 3894
              },
              {
                "length": 32,
                "start": 4810
              },
              {
                "length": 32,
                "start": 5111
              },
              {
                "length": 32,
                "start": 5260
              },
              {
                "length": 32,
                "start": 5804
              },
              {
                "length": 32,
                "start": 6086
              },
              {
                "length": 32,
                "start": 7256
              },
              {
                "length": 32,
                "start": 7574
              },
              {
                "length": 32,
                "start": 7828
              },
              {
                "length": 32,
                "start": 7943
              },
              {
                "length": 32,
                "start": 8058
              },
              {
                "length": 32,
                "start": 8177
              },
              {
                "length": 32,
                "start": 9036
              },
              {
                "length": 32,
                "start": 9207
              },
              {
                "length": 32,
                "start": 9336
              },
              {
                "length": 32,
                "start": 10002
              },
              {
                "length": 32,
                "start": 10416
              },
              {
                "length": 32,
                "start": 10714
              },
              {
                "length": 32,
                "start": 10863
              },
              {
                "length": 32,
                "start": 11321
              },
              {
                "length": 32,
                "start": 11418
              },
              {
                "length": 32,
                "start": 11603
              },
              {
                "length": 32,
                "start": 11933
              },
              {
                "length": 32,
                "start": 11997
              },
              {
                "length": 32,
                "start": 12182
              }
            ]
          },
          "linkReferences": {},
          "object": "6080604052600436106101a55760003560e01c806396adb337116100e1578063c45a01551161008a578063ead86a2911610064578063ead86a29146104dc578063eef40f31146104f1578063fb3bdb4114610511578063ffbcf7f314610524576101eb565b8063c45a015514610494578063d57b57a5146104a9578063ded9382a146104bc576101eb565b8063ad615dec116100bb578063ad615dec14610424578063ba3690cb14610444578063ba9f20b814610464576101eb565b806396adb337146103c2578063a59600db146103e2578063ad5c464814610402576101eb565b80634a25d94a1161014e5780637ff36ab5116101285780637ff36ab51461034f57806385f8c259146103625780638803dbee146103825780638de9d7d2146103a2576101eb565b80634a25d94a146102e1578063573692c1146103015780636a055fa914610321576101eb565b80632e1db1431161017f5780632e1db1431461028157806338ed1739146102a15780633d221b20146102c1576101eb565b8063054d50d4146101f057806318cbafe5146102265780632195995c14610253576101eb565b366101eb573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101e957fe5b005b600080fd5b3480156101fc57600080fd5b5061021061020b366004614d67565b610537565b60405161021d91906155d0565b60405180910390f35b34801561023257600080fd5b50610246610241366004614cf6565b61054c565b60405161021d9190614f8d565b34801561025f57600080fd5b5061027361026e36600461476f565b61082f565b60405161021d92919061564e565b34801561028d57600080fd5b5061024661029c366004614c24565b61094a565b3480156102ad57600080fd5b506102466102bc366004614cf6565b610978565b3480156102cd57600080fd5b506101e96102dc366004614cf6565b610a8b565b3480156102ed57600080fd5b506102466102fc366004614cf6565b610d84565b34801561030d57600080fd5b5061021061031c3660046149c3565b610f0c565b34801561032d57600080fd5b5061034161033c366004614bed565b61103e565b60405161021d929190614f09565b61024661035d366004614c6e565b61128b565b34801561036e57600080fd5b5061021061037d366004614d67565b61159b565b34801561038e57600080fd5b5061024661039d366004614cf6565b6115a8565b3480156103ae57600080fd5b506102106103bd366004614ae4565b611669565b3480156103ce57600080fd5b506102736103dd366004614819565b611843565b3480156103ee57600080fd5b506101e96103fd366004614cf6565b611c06565b34801561040e57600080fd5b50610417611f05565b60405161021d9190614e69565b34801561043057600080fd5b5061021061043f366004614d67565b611f29565b34801561045057600080fd5b5061027361045f366004614ae4565b611f36565b34801561047057600080fd5b5061048461047f3660046146fe565b61206f565b60405161021d949392919061565c565b3480156104a057600080fd5b506104176122eb565b6101e96104b7366004614c6e565b61230f565b3480156104c857600080fd5b506102736104d7366004614a4e565b6126e6565b3480156104e857600080fd5b5061041761281f565b3480156104fd57600080fd5b5061024661050c366004614c24565b612843565b61024661051f366004614c6e565b612871565b610484610532366004614972565b612baf565b60006105448484846130f8565b949350505050565b60608142811015610592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018181106105f757fe5b905060200201602081019061060c9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006106877f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106106a057fe5b602002602001015110156106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610721878760008181106106f057fe5b90506020020160208101906107059190614686565b33838660008151811061071457fe5b6020026020010151613322565b6107608388888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061344f915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d846001865103815181106107ac57fe5b60200260200101516040518263ffffffff1660e01b81526004016107d091906155d0565b600060405180830381600087803b1580156107ea57600080fd5b505af11580156107fe573d6000803e3d6000fd5b50505050610823858460018651038151811061081657fe5b60200260200101516135d9565b50509695505050505050565b600080600061085f7f00000000000000000000000000000000000000000000000000000000000000008f8f613692565b905060008761086e578c610890565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906108f1903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b5050505050506109368d8d8d60008e8e8e8e611843565b909e909d509b505050505050505050505050565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561370d565b606081428110156109b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006109e37f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106109fc57fe5b60200260200101511015610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610a4c878760008181106106f057fe5b610823838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b8042811015610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b610b5f85856000818110610ad657fe5b9050602002016020810190610aeb9190614686565b33610b597f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b9050602002016020810190610b329190614686565b8a8a6001818110610b3f57fe5b9050602002016020810190610b549190614686565b613692565b8a613322565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610b8f57fe5b9050602002016020810190610ba49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610bdc9190614e69565b60206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190614bd5565b9050610c6c868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250613895915050565b86610d428288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610c9f57fe5b9050602002016020810190610cb49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b60206040518083038186803b158015610d0457600080fd5b505afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190614bd5565b90613aee565b1015610d7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b5050505050505050565b60608142811015610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610e2657fe5b9050602002016020810190610e3b9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b6000610eb67f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b80945081925050508783600081518110610ecc57fe5b602002602001015111156106e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600080610f5a7f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600086610f69578a610f8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf90610fec903390309086908e908d908d908d90600401614e8a565b600060405180830381600087803b15801561100657600080fd5b505af115801561101a573d6000803e3d6000fd5b5050505061102e8c8c8c6000808e8e611669565b9c9b505050505050505050505050565b600080600061104b6145a9565b6040517f2f380b3500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f380b35906110bd908a906004016155d0565b60e06040518083038186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d9190614894565b90925090503373ffffffffffffffffffffffffffffffffffffffff831614611161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061535a565b60038160a00151600581111561117357fe5b10156111ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150ad565b805160208201516040517f883d273000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063883d27309061122a90859085908d908d90600401614f30565b6040805180830381600087803b15801561124357600080fd5b505af1158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b91906146c5565b909a909950975050505050505050565b606081428110156112c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061130c57fe5b90506020020160208101906113219190614686565b73ffffffffffffffffffffffffffffffffffffffff161461136e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b600061139c7f00000000000000000000000000000000000000000000000000000000000000003489896131a9565b809450819250505087836001855103815181106113b557fe5b602002602001015110156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08460008151811061143e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82856000815181106114d457fe5b60200260200101516040518363ffffffff1660e01b81526004016114f9929190614f67565b602060405180830381600087803b15801561151357600080fd5b505af1158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190614b35565b61155157fe5b611590838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b505095945050505050565b6000610544848484613ca7565b606081428110156115e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006116137f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b8094508192505050878360008151811061162957fe5b60200260200101511115610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600081428110156116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6116d6897f00000000000000000000000000000000000000000000000000000000000000008a8a8a8a308a611843565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935061178991508a90869073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190611734903090600401614e69565b60206040518083038186803b15801561174c57600080fd5b505afa158015611760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117849190614bd5565b613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906117fb9085906004016155d0565b600060405180830381600087803b15801561181557600080fd5b505af1158015611829573d6000803e3d6000fd5b5050505061183784836135d9565b50979650505050505050565b6000808242811015611881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b8815611a0a5760006118b47f00000000000000000000000000000000000000000000000000000000000000008d8d613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd9061190d90339085908f90600401614ed8565b602060405180830381600087803b15801561192757600080fd5b505af115801561193b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195f9190614b35565b506040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389afcb44906119b2908990600401614e69565b6040805180830381600087803b1580156119cb57600080fd5b505af11580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a039190614cd3565b9094509250505b8715611b84576000611a3d7f00000000000000000000000000000000000000000000000000000000000000008c8e613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd90611a9690339085908e90600401614ed8565b602060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae89190614b35565b506000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44896040518263ffffffff1660e01b8152600401611b259190614e69565b6040805180830381600087803b158015611b3e57600080fd5b505af1158015611b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b769190614cd3565b969096019594909401935050505b86831015611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906154df565b85821015611bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615391565b509850989650505050505050565b8042811015611c41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611ca657fe5b9050602002016020810190611cbb9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614611d08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b611d1885856000818110610ad657fe5b611d56858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613895915050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611dcb903090600401614e69565b60206040518083038186803b158015611de357600080fd5b505afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190614bd5565b905086811015611e57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90611ec99084906004016155d0565b600060405180830381600087803b158015611ee357600080fd5b505af1158015611ef7573d6000803e3d6000fd5b50505050610d7a84826135d9565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610544848484613e80565b6000808242811015611f74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b611fa48a7f00000000000000000000000000000000000000000000000000000000000000008b8b8b8b308b611843565b9093509150611fb48a8685613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906120269085906004016155d0565b600060405180830381600087803b15801561204057600080fd5b505af1158015612054573d6000803e3d6000fd5b5050505061206285836135d9565b5097509795505050505050565b60008060008084428110156120b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60648811156120eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b87156121f257600060646120ff8c8b613f1c565b8161210657fe5b04935060646121158b8b613f1c565b8161211c57fe5b04925061212b8d8d8686613f6d565b9197509550905061213e8d338389613322565b61214a8c338388613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061219c908b90600401614e69565b602060405180830381600087803b1580156121b657600080fd5b505af11580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ee9190614bd5565b9350505b606488146122dc57600061220c8c8e878d03898f03613f6d565b909c50909a5090506122208d33838e613322565b61222c8c33838d613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061227e908b90600401614e69565b602060405180830381600087803b15801561229857600080fd5b505af11580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d09190614bd5565b958b0195948a01949250505b50975097509750979350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b804281101561234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061238e57fe5b90506020020160208101906123a39190614686565b73ffffffffffffffffffffffffffffffffffffffff16146123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6124e37f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b836040518363ffffffff1660e01b8152600401612501929190614f67565b602060405180830381600087803b15801561251b57600080fd5b505af115801561252f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125539190614b35565b61255957fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061258957fe5b905060200201602081019061259e9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016125d69190614e69565b60206040518083038186803b1580156125ee57600080fd5b505afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126269190614bd5565b9050612666878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613895915050565b87610d428289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061269957fe5b90506020020160208101906126ae9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401610cec9190614e69565b60008060006127367f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600087612745578c612767565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906127c8903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b1580156127e257600080fd5b505af11580156127f6573d6000803e3d6000fd5b5050505061280a8e8e60008f8f8f8f611f36565b909f909e509c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561417f565b606081428110156128ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106128f257fe5b90506020020160208101906129079190614686565b73ffffffffffffffffffffffffffffffffffffffff1614612954576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006129827f0000000000000000000000000000000000000000000000000000000000000000898989613b31565b8094508192505050348360008151811061299857fe5b602002602001015111156129d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db084600081518110612a2157fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a5457600080fd5b505af1158015612a68573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8285600081518110612ab757fe5b60200260200101516040518363ffffffff1660e01b8152600401612adc929190614f67565b602060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2e9190614b35565b612b3457fe5b612b73838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b82600081518110612b8057fe5b6020026020010151341115611590576115903384600081518110612ba057fe5b602002602001015134036135d9565b6000806000808442811015612bf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6064881115612c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b8715612e8d576000612c858b7f00000000000000000000000000000000000000000000000000000000000000006064612c648e8e613f1c565b81612c6b57fe5b046064612c78348f613f1c565b81612c7f57fe5b04613f6d565b91975095509050612c988b338389613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d0057600080fd5b505af1158015612d14573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612d8d915084908990600401614f67565b602060405180830381600087803b158015612da757600080fd5b505af1158015612dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddf9190614b35565b612de557fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290612e37908b90600401614e69565b602060405180830381600087803b158015612e5157600080fd5b505af1158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190614bd5565b9350505b606488146130d757600080612ec87f00000000000000000000000000000000000000000000000000000000000000008d8834038a8f03613f6d565b909c5092509050612edb8c33848e613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f4357600080fd5b505af1158015612f57573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612fd0915085908590600401614f67565b602060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130229190614b35565b61302857fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690636a6278429061307a908c90600401614e69565b602060405180830381600087803b15801561309457600080fd5b505af11580156130a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cc9190614bd5565b968b01969501949250505b833411156130eb576130eb338534036135d9565b5095509550955095915050565b6000808411613133576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906151af565b6000831180156131435750600082115b613179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b60006131858584613f1c565b9050600061319385876142c6565b905080828161319e57fe5b049695505050505050565b6000606060028310156131e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff811180156131ff57600080fd5b50604051908082528060200260200182016040528015613229578160200160208202803683370190505b509050848160008151811061323a57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84018110156133185760008060006132c68a89898781811061328857fe5b905060200201602081019061329d9190614686565b8a8a886001018181106132ac57fe5b90506020020160208101906132c19190614686565b614303565b9250925092506132ea8585815181106132db57fe5b602002602001015184846130f8565b8585600101815181106132f957fe5b60209081029190910101528361330d578095505b505050600101613249565b5094509492505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161335793929190614ed8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516133a59190614dcc565b6000604051808303816000865af19150503d80600081146133e2576040519150601f19603f3d011682016040523d82523d6000602084013e6133e7565b606091505b50915091508180156134115750805115806134115750808060200190518101906134119190614b35565b613447576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061553c565b505050505050565b60005b60018351038110156135d35760008084838151811061346d57fe5b602002602001015185846001018151811061348457fe5b60200260200101519150915060008684600101815181106134a157fe5b602002602001015190506000600287510385106134be57856134ff565b6134ff7f0000000000000000000000000000000000000000000000000000000000000000848988600201815181106134f257fe5b6020026020010151613692565b905061352c7f00000000000000000000000000000000000000000000000000000000000000008585613692565b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9190911690631c6da724906135919085908590602481016155d9565b600060405180830381600087803b1580156135ab57600080fd5b505af11580156135bf573d6000803e3d6000fd5b505060019096019550613452945050505050565b50505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516136109190614dcc565b60006040518083038185875af1925050503d806000811461364d576040519150601f19603f3d011682016040523d82523d6000602084013e613652565b606091505b505090508061368d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615425565b505050565b60008383836040516020016136a8929190614d92565b604051602081830303815290604052805190602001206040516020016136cf929190614de8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6060600282101561374a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff8111801561376157600080fd5b5060405190808252806020026020018201604052801561378b578160200160208202803683370190505b509050838160018351038151811061379f57fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b801561388c57600080613825888787600187038181106137ea57fe5b90506020020160208101906137ff9190614686565b88888781811061380b57fe5b90506020020160208101906138209190614686565b6144f2565b50509150915061384984848151811061383a57fe5b60200260200101518383613ca7565b84600185038151811061385857fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016137ce565b50949350505050565b60005b600183510381101561368d576000808483815181106138b357fe5b60200260200101518584600101815181106138ca57fe5b60200260200101519150915060006139037f00000000000000000000000000000000000000000000000000000000000000008484613692565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561395157600080fd5b505afa158015613965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139899190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506139ec828873ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b93506139f98483836130f8565b92505050600060028951038710613a105787613a44565b613a447f0000000000000000000000000000000000000000000000000000000000000000868b8a600201815181106134f257fe5b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915290915073ffffffffffffffffffffffffffffffffffffffff851690631c6da72490613aaa9085908590602481016155d9565b600060405180830381600087803b158015613ac457600080fd5b505af1158015613ad8573d6000803e3d6000fd5b5050600190980197506138989650505050505050565b80820382811115613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990614fd1565b92915050565b600060606002831015613b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff81118015613b8757600080fd5b50604051908082528060200260200182016040528015613bb1578160200160208202803683370190505b5090508481600183510381518110613bc557fe5b60209081029190910101526000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85015b8015613c9b57613c3189888860018503818110613c1057fe5b9050602002016020810190613c259190614686565b8989858181106132ac57fe5b86519097509194509250613c5a90859083908110613c4b57fe5b60200260200101518484613ca7565b846001830381518110613c6957fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613bf7565b50505094509492505050565b6000808411613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615482565b600083118015613cf25750600082115b613d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b6000613d348486613f1c565b90506000613d428487613aee565b905080613d4f83826142c6565b8161319e57fe5b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613d89929190614f67565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613dd79190614dcc565b6000604051808303816000865af19150503d8060008114613e14576040519150601f19603f3d011682016040523d82523d6000602084013e613e19565b606091505b5091509150818015613e43575080511580613e43575080806020019051810190613e439190614b35565b613e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615008565b5050505050565b6000808411613ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615269565b600083118015613ecb5750600082115b613f01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b82613f0c8584613f1c565b81613f1357fe5b04949350505050565b6000811580613f3757505080820282828281613f3457fe5b04145b613b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150e4565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390588886040518363ffffffff1660e01b8152600401613fcd929190614f09565b60206040518083038186803b158015613fe557600080fd5b505afa158015613ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401d91906146a9565b905073ffffffffffffffffffffffffffffffffffffffff811661406c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615599565b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b1580156140b557600080fd5b505afa1580156140c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ed9190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150816000148015614121575080155b1561413157869450859350614173565b600061413e888484613e80565b905086811161415257879550935083614171565b600061415f888486613e80565b90508881111561416b57fe5b95508694505b505b50509450945094915050565b606060028210156141bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff811180156141d357600080fd5b506040519080825280602002602001820160405280156141fd578160200160208202803683370190505b509050838160008151811061420e57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830181101561388c5760008061427e8887878681811061425a57fe5b905060200201602081019061426f9190614686565b88888760010181811061380b57fe5b5050915091506142a284848151811061429357fe5b602002602001015183836130f8565b8484600101815181106142b157fe5b6020908102919091010152505060010161421d565b80820182811015613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615178565b60008060006143138686866144f2565b5091945092509050600080808061432b8a898b6144f2565b9296509094509250905060006143418886613f1c565b9050600061434f8886613f1c565b905061435b8184613f1c565b61436783612710613f1c565b11156144e35760006143798383613aee565b90506000614392600261438c8d8a6142c6565b90613f1c565b905060006143a5600261438c8d8c6142c6565b90506143bc8e8b898487816143b657fe5b04613322565b6143cb8d888c8587816143b657fe5b8973ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561441257600080fd5b505af1158015614426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061444a9190614b51565b50508673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561449357600080fd5b505af11580156144a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144cb9190614b51565b50506144d88f8f8f6144f2565b50919d509b50505050505b50505050505093509350939050565b600080600080614503878787613692565b91508173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561454b57600080fd5b505afa15801561455f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145839190614b7f565b6dffffffffffffffffffffffffffff9384169b9290931699509397509095509350505050565b6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b8051613b2b816156a3565b60008083601f8401126145f8578182fd5b50813567ffffffffffffffff81111561460f578182fd5b602083019150836020808302850101111561462957600080fd5b9250929050565b805160068110613b2b57600080fd5b80516dffffffffffffffffffffffffffff81168114613b2b57600080fd5b805167ffffffffffffffff81168114613b2b57600080fd5b803560ff81168114613b2b57600080fd5b600060208284031215614697578081fd5b81356146a2816156a3565b9392505050565b6000602082840312156146ba578081fd5b81516146a2816156a3565b600080604083850312156146d7578081fd5b82516146e2816156a3565b60208401519092506146f3816156a3565b809150509250929050565b600080600080600080600060e0888a031215614718578283fd5b8735614723816156a3565b96506020880135614733816156a3565b955060408801359450606088013593506080880135925060a0880135614758816156a3565b8092505060c0880135905092959891949750929550565b60008060008060008060008060008060006101608c8e031215614790578384fd5b8b3561479b816156a3565b9a5060208c01356147ab816156a3565b995060408c0135985060608c0135975060808c0135965060a08c01356147d0816156a3565b955060c08c0135945060e08c01356147e7816156c8565b93506147f78d6101008e01614675565b92506101208c013591506101408c013590509295989b509295989b9093969950565b600080600080600080600080610100898b031215614835578384fd5b8835614840816156a3565b97506020890135614850816156a3565b965060408901359550606089013594506080890135935060a0890135925060c089013561487c816156a3565b8092505060e089013590509295985092959890939650565b60008082840360e08112156148a7578283fd5b83516148b2816156a3565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156148e3578182fd5b5060405160c0810181811067ffffffffffffffff82111715614903578283fd5b60405261491385602086016145dc565b815261492285604086016145dc565b60208201526060840151604082015261493e856080860161465d565b60608201526149508560a0860161465d565b60808201526149628560c08601614630565b60a0820152809150509250929050565b600080600080600060a08688031215614989578283fd5b8535614994816156a3565b9450602086013593506040860135925060608601356149b2816156a3565b949793965091946080013592915050565b60008060008060008060008060006101208a8c0312156149e1578283fd5b89356149ec816156a3565b985060208a0135975060408a0135965060608a0135614a0a816156a3565b955060808a0135945060a08a0135614a21816156c8565b9350614a308b60c08c01614675565b925060e08a013591506101008a013590509295985092959850929598565b6000806000806000806000806000806101408b8d031215614a6d578384fd5b8a35614a78816156a3565b995060208b0135985060408b0135975060608b0135965060808b0135614a9d816156a3565b955060a08b0135945060c08b0135614ab4816156c8565b9350614ac38c60e08d01614675565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215614afe578081fd5b8735614b09816156a3565b96506020880135955060408801359450606088013593506080880135925060a0880135614758816156a3565b600060208284031215614b46578081fd5b81516146a2816156c8565b60008060408385031215614b63578182fd5b8251614b6e816156d6565b60208401519092506146f3816156d6565b60008060008060808587031215614b94578182fd5b614b9e868661463f565b9350614bad866020870161463f565b9250604085015163ffffffff81168114614bc5578283fd5b6060959095015193969295505050565b600060208284031215614be6578081fd5b5051919050565b600080600060608486031215614c01578081fd5b833592506020840135614c13816156a3565b929592945050506040919091013590565b600080600060408486031215614c38578081fd5b83359250602084013567ffffffffffffffff811115614c55578182fd5b614c61868287016145e7565b9497909650939450505050565b600080600080600060808688031215614c85578283fd5b85359450602086013567ffffffffffffffff811115614ca2578384fd5b614cae888289016145e7565b9095509350506040860135614cc2816156a3565b949793965091946060013592915050565b60008060408385031215614ce5578182fd5b505080516020909101519092909150565b60008060008060008060a08789031215614d0e578384fd5b8635955060208701359450604087013567ffffffffffffffff811115614d32578485fd5b614d3e89828a016145e7565b9095509350506060870135614d52816156a3565b80925050608087013590509295509295509295565b600080600060608486031215614d7b578081fd5b505081359360208301359350604090920135919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614dde818460208701615677565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527fbaeae6b526d52ab9edea88a8a5991ed61443a0c4d6bea03dc99971664961f4b7603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614fc557835183529284019291840191600101614fa9565b50909695505050505050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f466553776170526f757465723a20494e56414c49445f50415448000000000000604082015260600190565b60208082526015908201527f466553776170526f757465723a20455850495245440000000000000000000000604082015260600190565b60208082526013908201527f4665537761703a204e4f5420414c4c4f57454400000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526025908201527f4665537761704c6962726172793a20494e53554646494349454e545f4c49515560408201527f4944495459000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526028908201527f4665537761704c6962726172793a20494e53554646494349454e545f494e505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f466553776170526f757465723a20494e53554646494349454e545f4f5554505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4665537761704c6962726172793a20494e53554646494349454e545f414d4f5560408201527f4e54000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4665537761704c6962726172793a20494e56414c49445f504154480000000000604082015260600190565b60208082526024908201527f466553776170526f757465723a204558434553534956455f494e5055545f414d60408201527f4f554e5400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4665537761703a204e4f5420544f4b454e204f574e4552000000000000000000604082015260600190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f425f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526011908201527f4665537761703a20524154494f20454552000000000000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4665537761704c6962726172793a20494e53554646494349454e545f4f55545060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f415f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f4665537761703a204e4f54204352454154454400000000000000000000000000604082015260600190565b90815260200190565b600084825273ffffffffffffffffffffffffffffffffffffffff8416602083015260606040830152825180606084015261561a816080850160208701615677565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b60005b8381101561569257818101518382015260200161567a565b838111156135d35750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146156c557600080fd5b50565b80151581146156c557600080fd5b6dffffffffffffffffffffffffffff811681146156c557600080fdfea264697066735822122041f4b4957e4772e5653c3c9221462bccc6b173672ddcc040d0b30600931cbb8764736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x1A5 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x96ADB337 GT PUSH2 0xE1 JUMPI DUP1 PUSH4 0xC45A0155 GT PUSH2 0x8A JUMPI DUP1 PUSH4 0xEAD86A29 GT PUSH2 0x64 JUMPI DUP1 PUSH4 0xEAD86A29 EQ PUSH2 0x4DC JUMPI DUP1 PUSH4 0xEEF40F31 EQ PUSH2 0x4F1 JUMPI DUP1 PUSH4 0xFB3BDB41 EQ PUSH2 0x511 JUMPI DUP1 PUSH4 0xFFBCF7F3 EQ PUSH2 0x524 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0xC45A0155 EQ PUSH2 0x494 JUMPI DUP1 PUSH4 0xD57B57A5 EQ PUSH2 0x4A9 JUMPI DUP1 PUSH4 0xDED9382A EQ PUSH2 0x4BC JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0xAD615DEC GT PUSH2 0xBB JUMPI DUP1 PUSH4 0xAD615DEC EQ PUSH2 0x424 JUMPI DUP1 PUSH4 0xBA3690CB EQ PUSH2 0x444 JUMPI DUP1 PUSH4 0xBA9F20B8 EQ PUSH2 0x464 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x96ADB337 EQ PUSH2 0x3C2 JUMPI DUP1 PUSH4 0xA59600DB EQ PUSH2 0x3E2 JUMPI DUP1 PUSH4 0xAD5C4648 EQ PUSH2 0x402 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A GT PUSH2 0x14E JUMPI DUP1 PUSH4 0x7FF36AB5 GT PUSH2 0x128 JUMPI DUP1 PUSH4 0x7FF36AB5 EQ PUSH2 0x34F JUMPI DUP1 PUSH4 0x85F8C259 EQ PUSH2 0x362 JUMPI DUP1 PUSH4 0x8803DBEE EQ PUSH2 0x382 JUMPI DUP1 PUSH4 0x8DE9D7D2 EQ PUSH2 0x3A2 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x4A25D94A EQ PUSH2 0x2E1 JUMPI DUP1 PUSH4 0x573692C1 EQ PUSH2 0x301 JUMPI DUP1 PUSH4 0x6A055FA9 EQ PUSH2 0x321 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x2E1DB143 GT PUSH2 0x17F JUMPI DUP1 PUSH4 0x2E1DB143 EQ PUSH2 0x281 JUMPI DUP1 PUSH4 0x38ED1739 EQ PUSH2 0x2A1 JUMPI DUP1 PUSH4 0x3D221B20 EQ PUSH2 0x2C1 JUMPI PUSH2 0x1EB JUMP JUMPDEST DUP1 PUSH4 0x54D50D4 EQ PUSH2 0x1F0 JUMPI DUP1 PUSH4 0x18CBAFE5 EQ PUSH2 0x226 JUMPI DUP1 PUSH4 0x2195995C EQ PUSH2 0x253 JUMPI PUSH2 0x1EB JUMP JUMPDEST CALLDATASIZE PUSH2 0x1EB JUMPI CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND EQ PUSH2 0x1E9 JUMPI INVALID JUMPDEST STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1FC JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x20B CALLDATASIZE PUSH1 0x4 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0x537 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP2 SWAP1 PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x241 CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x54C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP2 SWAP1 PUSH2 0x4F8D JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x25F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x26E CALLDATASIZE PUSH1 0x4 PUSH2 0x476F JUMP JUMPDEST PUSH2 0x82F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP3 SWAP2 SWAP1 PUSH2 0x564E JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x28D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x29C CALLDATASIZE PUSH1 0x4 PUSH2 0x4C24 JUMP JUMPDEST PUSH2 0x94A JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2AD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x2BC CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x978 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2CD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH2 0x2DC CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0xA8B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2ED JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x2FC CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0xD84 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x30D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x31C CALLDATASIZE PUSH1 0x4 PUSH2 0x49C3 JUMP JUMPDEST PUSH2 0xF0C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x32D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x341 PUSH2 0x33C CALLDATASIZE PUSH1 0x4 PUSH2 0x4BED JUMP JUMPDEST PUSH2 0x103E JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP3 SWAP2 SWAP1 PUSH2 0x4F09 JUMP JUMPDEST PUSH2 0x246 PUSH2 0x35D CALLDATASIZE PUSH1 0x4 PUSH2 0x4C6E JUMP JUMPDEST PUSH2 0x128B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x36E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x37D CALLDATASIZE PUSH1 0x4 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0x159B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x38E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x39D CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x15A8 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3AE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x3BD CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE4 JUMP JUMPDEST PUSH2 0x1669 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3CE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x3DD CALLDATASIZE PUSH1 0x4 PUSH2 0x4819 JUMP JUMPDEST PUSH2 0x1843 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x3EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1E9 PUSH2 0x3FD CALLDATASIZE PUSH1 0x4 PUSH2 0x4CF6 JUMP JUMPDEST PUSH2 0x1C06 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x40E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 PUSH2 0x1F05 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x430 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x210 PUSH2 0x43F CALLDATASIZE PUSH1 0x4 PUSH2 0x4D67 JUMP JUMPDEST PUSH2 0x1F29 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x450 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x45F CALLDATASIZE PUSH1 0x4 PUSH2 0x4AE4 JUMP JUMPDEST PUSH2 0x1F36 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x470 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x484 PUSH2 0x47F CALLDATASIZE PUSH1 0x4 PUSH2 0x46FE JUMP JUMPDEST PUSH2 0x206F JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH2 0x21D SWAP5 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x565C JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4A0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 PUSH2 0x22EB JUMP JUMPDEST PUSH2 0x1E9 PUSH2 0x4B7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4C6E JUMP JUMPDEST PUSH2 0x230F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4C8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x273 PUSH2 0x4D7 CALLDATASIZE PUSH1 0x4 PUSH2 0x4A4E JUMP JUMPDEST PUSH2 0x26E6 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4E8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x417 PUSH2 0x281F JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4FD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH2 0x50C CALLDATASIZE PUSH1 0x4 PUSH2 0x4C24 JUMP JUMPDEST PUSH2 0x2843 JUMP JUMPDEST PUSH2 0x246 PUSH2 0x51F CALLDATASIZE PUSH1 0x4 PUSH2 0x4C6E JUMP JUMPDEST PUSH2 0x2871 JUMP JUMPDEST PUSH2 0x484 PUSH2 0x532 CALLDATASIZE PUSH1 0x4 PUSH2 0x4972 JUMP JUMPDEST PUSH2 0x2BAF JUMP JUMPDEST PUSH1 0x0 PUSH2 0x544 DUP5 DUP5 DUP5 PUSH2 0x30F8 JUMP JUMPDEST SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x592 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x5F7 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x60C SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x659 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x687 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x31A9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x6A0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST PUSH2 0x721 DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x6F0 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x705 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST CALLER DUP4 DUP7 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x714 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3322 JUMP JUMPDEST PUSH2 0x760 DUP4 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x344F SWAP2 POP POP JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x2E1A7D4D DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x7AC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x7D0 SWAP2 SWAP1 PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x7EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x7FE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x823 DUP6 DUP5 PUSH1 0x1 DUP7 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x816 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x35D9 JUMP JUMPDEST POP POP SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x85F PUSH32 0x0 DUP16 DUP16 PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x86E JUMPI DUP13 PUSH2 0x890 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x8F1 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP16 SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x90B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x91F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP POP PUSH2 0x936 DUP14 DUP14 DUP14 PUSH1 0x0 DUP15 DUP15 DUP15 DUP15 PUSH2 0x1843 JUMP JUMPDEST SWAP1 SWAP15 SWAP1 SWAP14 POP SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH2 0x544 PUSH32 0x0 DUP6 DUP6 DUP6 PUSH2 0x370D JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x9B5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x9E3 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x31A9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x9FC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0xA3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST PUSH2 0xA4C DUP8 DUP8 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x6F0 JUMPI INVALID JUMPDEST PUSH2 0x823 DUP4 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP11 SWAP3 POP PUSH2 0x344F SWAP2 POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0xAC6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH2 0xB5F DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xAD6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xAEB SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST CALLER PUSH2 0xB59 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xB1D JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xB32 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP11 DUP11 PUSH1 0x1 DUP2 DUP2 LT PUSH2 0xB3F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xB54 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH2 0x3692 JUMP JUMPDEST DUP11 PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x0 DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0xB8F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xBA4 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP6 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xBDC SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xBF4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xC08 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xC2C SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP1 POP PUSH2 0xC6C DUP7 DUP7 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP9 SWAP3 POP PUSH2 0x3895 SWAP2 POP POP JUMP JUMPDEST DUP7 PUSH2 0xD42 DUP3 DUP9 DUP9 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0xC9F JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xCB4 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCEC SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0xD04 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0xD18 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0xD3C SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP1 PUSH2 0x3AEE JUMP JUMPDEST LT ISZERO PUSH2 0xD7A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0xDC1 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0xE26 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0xE3B SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0xE88 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 PUSH2 0xEB6 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x3B31 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0xECC JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x6E0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52FD JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH2 0xF5A PUSH32 0x0 DUP13 PUSH32 0x0 PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP7 PUSH2 0xF69 JUMPI DUP11 PUSH2 0xF8B JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0xFEC SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP15 SWAP1 DUP14 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1006 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x101A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x102E DUP13 DUP13 DUP13 PUSH1 0x0 DUP1 DUP15 DUP15 PUSH2 0x1669 JUMP JUMPDEST SWAP13 SWAP12 POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x104B PUSH2 0x45A9 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2F380B3500000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2F380B35 SWAP1 PUSH2 0x10BD SWAP1 DUP11 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0xE0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x10D5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x10E9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x110D SWAP2 SWAP1 PUSH2 0x4894 JUMP JUMPDEST SWAP1 SWAP3 POP SWAP1 POP CALLER PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND EQ PUSH2 0x1161 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x535A JUMP JUMPDEST PUSH1 0x3 DUP2 PUSH1 0xA0 ADD MLOAD PUSH1 0x5 DUP2 GT ISZERO PUSH2 0x1173 JUMPI INVALID JUMPDEST LT ISZERO PUSH2 0x11AB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x50AD JUMP JUMPDEST DUP1 MLOAD PUSH1 0x20 DUP3 ADD MLOAD PUSH1 0x40 MLOAD PUSH32 0x883D273000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x883D2730 SWAP1 PUSH2 0x122A SWAP1 DUP6 SWAP1 DUP6 SWAP1 DUP14 SWAP1 DUP14 SWAP1 PUSH1 0x4 ADD PUSH2 0x4F30 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1243 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1257 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x127B SWAP2 SWAP1 PUSH2 0x46C5 JUMP JUMPDEST SWAP1 SWAP11 SWAP1 SWAP10 POP SWAP8 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x12C8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x130C JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1321 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x136E JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x139C PUSH32 0x0 CALLVALUE DUP10 DUP10 PUSH2 0x31A9 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x1 DUP6 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x13B5 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD LT ISZERO PUSH2 0x13F5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x143E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1471 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1485 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x14D4 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x14F9 SWAP3 SWAP2 SWAP1 PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1513 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1527 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x154B SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x1551 JUMPI INVALID JUMPDEST PUSH2 0x1590 DUP4 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP11 SWAP3 POP PUSH2 0x344F SWAP2 POP POP JUMP JUMPDEST POP POP SWAP6 SWAP5 POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH2 0x544 DUP5 DUP5 DUP5 PUSH2 0x3CA7 JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x15E5 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x1613 PUSH32 0x0 DUP11 DUP10 DUP10 PUSH2 0x3B31 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP DUP8 DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x1629 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0xA3C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52FD JUMP JUMPDEST PUSH1 0x0 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x16A6 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH2 0x16D6 DUP10 PUSH32 0x0 DUP11 DUP11 DUP11 DUP11 ADDRESS DUP11 PUSH2 0x1843 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP4 POP PUSH2 0x1789 SWAP2 POP DUP11 SWAP1 DUP7 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1734 SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x174C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1760 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1784 SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST PUSH2 0x3D56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x17FB SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1815 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1829 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x1837 DUP5 DUP4 PUSH2 0x35D9 JUMP JUMPDEST POP SWAP8 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1881 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST DUP9 ISZERO PUSH2 0x1A0A JUMPI PUSH1 0x0 PUSH2 0x18B4 PUSH32 0x0 DUP14 DUP14 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x190D SWAP1 CALLER SWAP1 DUP6 SWAP1 DUP16 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ED8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1927 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x193B JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x195F SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST POP PUSH1 0x40 MLOAD PUSH32 0x89AFCB4400000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x89AFCB44 SWAP1 PUSH2 0x19B2 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x19CB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x19DF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1A03 SWAP2 SWAP1 PUSH2 0x4CD3 JUMP JUMPDEST SWAP1 SWAP5 POP SWAP3 POP POP JUMPDEST DUP8 ISZERO PUSH2 0x1B84 JUMPI PUSH1 0x0 PUSH2 0x1A3D PUSH32 0x0 DUP13 DUP15 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x23B872DD00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x23B872DD SWAP1 PUSH2 0x1A96 SWAP1 CALLER SWAP1 DUP6 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x4ED8 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1AB0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1AC4 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1AE8 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST POP PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x89AFCB44 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x1B25 SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1B3E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1B52 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1B76 SWAP2 SWAP1 PUSH2 0x4CD3 JUMP JUMPDEST SWAP7 SWAP1 SWAP7 ADD SWAP6 SWAP5 SWAP1 SWAP5 ADD SWAP4 POP POP POP JUMPDEST DUP7 DUP4 LT ISZERO PUSH2 0x1BBE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x54DF JUMP JUMPDEST DUP6 DUP3 LT ISZERO PUSH2 0x1BF8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5391 JUMP JUMPDEST POP SWAP9 POP SWAP9 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1C41 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND DUP6 DUP6 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x1CA6 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x1CBB SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x1D08 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH2 0x1D18 DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xAD6 JUMPI INVALID JUMPDEST PUSH2 0x1D56 DUP6 DUP6 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP ADDRESS SWAP3 POP PUSH2 0x3895 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x70A0823100000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x0 SWAP1 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x70A08231 SWAP1 PUSH2 0x1DCB SWAP1 ADDRESS SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1DE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x1DF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x1E1B SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 LT ISZERO PUSH2 0x1E57 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x520C JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x1EC9 SWAP1 DUP5 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x1EE3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x1EF7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0xD7A DUP5 DUP3 PUSH2 0x35D9 JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x544 DUP5 DUP5 DUP5 PUSH2 0x3E80 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 TIMESTAMP DUP2 LT ISZERO PUSH2 0x1F74 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH2 0x1FA4 DUP11 PUSH32 0x0 DUP12 DUP12 DUP12 DUP12 ADDRESS DUP12 PUSH2 0x1843 JUMP JUMPDEST SWAP1 SWAP4 POP SWAP2 POP PUSH2 0x1FB4 DUP11 DUP7 DUP6 PUSH2 0x3D56 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x2E1A7D4D00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP1 PUSH4 0x2E1A7D4D SWAP1 PUSH2 0x2026 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x55D0 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2040 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2054 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x2062 DUP6 DUP4 PUSH2 0x35D9 JUMP JUMPDEST POP SWAP8 POP SWAP8 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 TIMESTAMP DUP2 LT ISZERO PUSH2 0x20B0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x64 DUP9 GT ISZERO PUSH2 0x20EB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x53EE JUMP JUMPDEST DUP8 ISZERO PUSH2 0x21F2 JUMPI PUSH1 0x0 PUSH1 0x64 PUSH2 0x20FF DUP13 DUP12 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x2106 JUMPI INVALID JUMPDEST DIV SWAP4 POP PUSH1 0x64 PUSH2 0x2115 DUP12 DUP12 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x211C JUMPI INVALID JUMPDEST DIV SWAP3 POP PUSH2 0x212B DUP14 DUP14 DUP7 DUP7 PUSH2 0x3F6D JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP PUSH2 0x213E DUP14 CALLER DUP4 DUP10 PUSH2 0x3322 JUMP JUMPDEST PUSH2 0x214A DUP13 CALLER DUP4 DUP9 PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x219C SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x21B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x21CA JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x21EE SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP4 POP POP JUMPDEST PUSH1 0x64 DUP9 EQ PUSH2 0x22DC JUMPI PUSH1 0x0 PUSH2 0x220C DUP13 DUP15 DUP8 DUP14 SUB DUP10 DUP16 SUB PUSH2 0x3F6D JUMP JUMPDEST SWAP1 SWAP13 POP SWAP1 SWAP11 POP SWAP1 POP PUSH2 0x2220 DUP14 CALLER DUP4 DUP15 PUSH2 0x3322 JUMP JUMPDEST PUSH2 0x222C DUP13 CALLER DUP4 DUP14 PUSH2 0x3322 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x227E SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2298 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x22AC JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x22D0 SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP6 DUP12 ADD SWAP6 SWAP5 DUP11 ADD SWAP5 SWAP3 POP POP JUMPDEST POP SWAP8 POP SWAP8 POP SWAP8 POP SWAP8 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST DUP1 TIMESTAMP DUP2 LT ISZERO PUSH2 0x234A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP6 DUP6 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x238E JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x23A3 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x23F0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 CALLVALUE SWAP1 POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x245D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2471 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB PUSH2 0x24E3 PUSH32 0x0 DUP10 DUP10 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0xB1D JUMPI INVALID JUMPDEST DUP4 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2501 SWAP3 SWAP2 SWAP1 PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x251B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x252F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2553 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x2559 JUMPI INVALID JUMPDEST PUSH1 0x0 DUP7 DUP7 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2589 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x259E SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x25D6 SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x25EE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x2602 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2626 SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP1 POP PUSH2 0x2666 DUP8 DUP8 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP10 SWAP3 POP PUSH2 0x3895 SWAP2 POP POP JUMP JUMPDEST DUP8 PUSH2 0xD42 DUP3 DUP10 DUP10 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 ADD DUP2 DUP2 LT PUSH2 0x2699 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x26AE SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP10 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCEC SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x2736 PUSH32 0x0 DUP15 PUSH32 0x0 PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP8 PUSH2 0x2745 JUMPI DUP13 PUSH2 0x2767 JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF JUMPDEST PUSH1 0x40 MLOAD PUSH32 0xD505ACCF00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0xD505ACCF SWAP1 PUSH2 0x27C8 SWAP1 CALLER SWAP1 ADDRESS SWAP1 DUP7 SWAP1 DUP16 SWAP1 DUP15 SWAP1 DUP15 SWAP1 DUP15 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E8A JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x27E2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x27F6 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH2 0x280A DUP15 DUP15 PUSH1 0x0 DUP16 DUP16 DUP16 DUP16 PUSH2 0x1F36 JUMP JUMPDEST SWAP1 SWAP16 SWAP1 SWAP15 POP SWAP13 POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH32 0x0 DUP2 JUMP JUMPDEST PUSH1 0x60 PUSH2 0x544 PUSH32 0x0 DUP6 DUP6 DUP6 PUSH2 0x417F JUMP JUMPDEST PUSH1 0x60 DUP2 TIMESTAMP DUP2 LT ISZERO PUSH2 0x28AE JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP7 DUP7 PUSH1 0x0 DUP2 DUP2 LT PUSH2 0x28F2 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x2907 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ PUSH2 0x2954 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x503F JUMP JUMPDEST PUSH1 0x0 PUSH2 0x2982 PUSH32 0x0 DUP10 DUP10 DUP10 PUSH2 0x3B31 JUMP JUMPDEST DUP1 SWAP5 POP DUP2 SWAP3 POP POP POP CALLVALUE DUP4 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2998 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD GT ISZERO PUSH2 0x29D8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52FD JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2A21 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2A54 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2A68 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP POP PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP3 DUP6 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2AB7 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x2ADC SWAP3 SWAP2 SWAP1 PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2AF6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2B0A JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2B2E SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x2B34 JUMPI INVALID JUMPDEST PUSH2 0x2B73 DUP4 DUP9 DUP9 DUP1 DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD PUSH1 0x40 MLOAD SWAP1 DUP2 ADD PUSH1 0x40 MSTORE DUP1 SWAP4 SWAP3 SWAP2 SWAP1 DUP2 DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP4 PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 SWAP3 ADD SWAP2 SWAP1 SWAP2 MSTORE POP DUP11 SWAP3 POP PUSH2 0x344F SWAP2 POP POP JUMP JUMPDEST DUP3 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2B80 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE GT ISZERO PUSH2 0x1590 JUMPI PUSH2 0x1590 CALLER DUP5 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x2BA0 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD CALLVALUE SUB PUSH2 0x35D9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 TIMESTAMP DUP2 LT ISZERO PUSH2 0x2BF0 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5076 JUMP JUMPDEST PUSH1 0x64 DUP9 GT ISZERO PUSH2 0x2C2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x53EE JUMP JUMPDEST DUP8 ISZERO PUSH2 0x2E8D JUMPI PUSH1 0x0 PUSH2 0x2C85 DUP12 PUSH32 0x0 PUSH1 0x64 PUSH2 0x2C64 DUP15 DUP15 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x2C6B JUMPI INVALID JUMPDEST DIV PUSH1 0x64 PUSH2 0x2C78 CALLVALUE DUP16 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x2C7F JUMPI INVALID JUMPDEST DIV PUSH2 0x3F6D JUMP JUMPDEST SWAP2 SWAP8 POP SWAP6 POP SWAP1 POP PUSH2 0x2C98 DUP12 CALLER DUP4 DUP10 PUSH2 0x3322 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP7 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2D00 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2D14 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP4 POP PUSH4 0xA9059CBB SWAP3 POP PUSH2 0x2D8D SWAP2 POP DUP5 SWAP1 DUP10 SWAP1 PUSH1 0x4 ADD PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2DA7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2DBB JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2DDF SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x2DE5 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x2E37 SWAP1 DUP12 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2E51 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2E65 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x2E89 SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP4 POP POP JUMPDEST PUSH1 0x64 DUP9 EQ PUSH2 0x30D7 JUMPI PUSH1 0x0 DUP1 PUSH2 0x2EC8 PUSH32 0x0 DUP14 DUP9 CALLVALUE SUB DUP11 DUP16 SUB PUSH2 0x3F6D JUMP JUMPDEST SWAP1 SWAP13 POP SWAP3 POP SWAP1 POP PUSH2 0x2EDB DUP13 CALLER DUP5 DUP15 PUSH2 0x3322 JUMP JUMPDEST PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xD0E30DB0 DUP3 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP9 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2F43 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2F57 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xA9059CBB00000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF PUSH32 0x0 AND SWAP4 POP PUSH4 0xA9059CBB SWAP3 POP PUSH2 0x2FD0 SWAP2 POP DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x4 ADD PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x2FEA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x2FFE JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3022 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x3028 JUMPI INVALID JUMPDEST PUSH1 0x40 MLOAD PUSH32 0x6A62784200000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND SWAP1 PUSH4 0x6A627842 SWAP1 PUSH2 0x307A SWAP1 DUP13 SWAP1 PUSH1 0x4 ADD PUSH2 0x4E69 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3094 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x30A8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x30CC SWAP2 SWAP1 PUSH2 0x4BD5 JUMP JUMPDEST SWAP7 DUP12 ADD SWAP7 SWAP6 ADD SWAP5 SWAP3 POP POP JUMPDEST DUP4 CALLVALUE GT ISZERO PUSH2 0x30EB JUMPI PUSH2 0x30EB CALLER DUP6 CALLVALUE SUB PUSH2 0x35D9 JUMP JUMPDEST POP SWAP6 POP SWAP6 POP SWAP6 POP SWAP6 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3133 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x51AF JUMP JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3143 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3179 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x511B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3185 DUP6 DUP5 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3193 DUP6 DUP8 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x319E JUMPI INVALID JUMPDEST DIV SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x31E8 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52C6 JUMP JUMPDEST DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x31FF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3229 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP5 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x323A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 ADD DUP2 LT ISZERO PUSH2 0x3318 JUMPI PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x32C6 DUP11 DUP10 DUP10 DUP8 DUP2 DUP2 LT PUSH2 0x3288 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x329D SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP11 DUP11 DUP9 PUSH1 0x1 ADD DUP2 DUP2 LT PUSH2 0x32AC JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x32C1 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH2 0x4303 JUMP JUMPDEST SWAP3 POP SWAP3 POP SWAP3 POP PUSH2 0x32EA DUP6 DUP6 DUP2 MLOAD DUP2 LT PUSH2 0x32DB JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 PUSH2 0x30F8 JUMP JUMPDEST DUP6 DUP6 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x32F9 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE DUP4 PUSH2 0x330D JUMPI DUP1 SWAP6 POP JUMPDEST POP POP POP PUSH1 0x1 ADD PUSH2 0x3249 JUMP JUMPDEST POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP6 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x23B872DD DUP7 DUP7 DUP7 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3357 SWAP4 SWAP3 SWAP2 SWAP1 PUSH2 0x4ED8 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x33A5 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x33E2 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x33E7 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3411 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3411 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3411 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x3447 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x553C JUMP JUMPDEST POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x35D3 JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x346D JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x3484 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 DUP7 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x34A1 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP1 POP PUSH1 0x0 PUSH1 0x2 DUP8 MLOAD SUB DUP6 LT PUSH2 0x34BE JUMPI DUP6 PUSH2 0x34FF JUMP JUMPDEST PUSH2 0x34FF PUSH32 0x0 DUP5 DUP10 DUP9 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x34F2 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH2 0x352C PUSH32 0x0 DUP6 DUP6 PUSH2 0x3692 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH32 0x1C6DA72400000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND SWAP1 PUSH4 0x1C6DA724 SWAP1 PUSH2 0x3591 SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x24 DUP2 ADD PUSH2 0x55D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x35AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x35BF JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP7 ADD SWAP6 POP PUSH2 0x3452 SWAP5 POP POP POP POP POP JUMP JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD SWAP1 SWAP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND SWAP1 DUP4 SWAP1 PUSH1 0x40 MLOAD PUSH2 0x3610 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 DUP8 GAS CALL SWAP3 POP POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x364D JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3652 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP POP SWAP1 POP DUP1 PUSH2 0x368D JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5425 JUMP JUMPDEST POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP4 DUP4 DUP4 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x36A8 SWAP3 SWAP2 SWAP1 PUSH2 0x4D92 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE DUP1 MLOAD SWAP1 PUSH1 0x20 ADD KECCAK256 PUSH1 0x40 MLOAD PUSH1 0x20 ADD PUSH2 0x36CF SWAP3 SWAP2 SWAP1 PUSH2 0x4DE8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 DUP5 SUB ADD DUP2 MSTORE SWAP2 SWAP1 MSTORE DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD KECCAK256 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x374A JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52C6 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3761 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x378B JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x379F JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 ADD JUMPDEST DUP1 ISZERO PUSH2 0x388C JUMPI PUSH1 0x0 DUP1 PUSH2 0x3825 DUP9 DUP8 DUP8 PUSH1 0x1 DUP8 SUB DUP2 DUP2 LT PUSH2 0x37EA JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x37FF SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP9 DUP9 DUP8 DUP2 DUP2 LT PUSH2 0x380B JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3820 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST PUSH2 0x44F2 JUMP JUMPDEST POP POP SWAP2 POP SWAP2 POP PUSH2 0x3849 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x383A JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x3CA7 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP6 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3858 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x37CE JUMP JUMPDEST POP SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 JUMPDEST PUSH1 0x1 DUP4 MLOAD SUB DUP2 LT ISZERO PUSH2 0x368D JUMPI PUSH1 0x0 DUP1 DUP5 DUP4 DUP2 MLOAD DUP2 LT PUSH2 0x38B3 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP6 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x38CA JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD SWAP2 POP SWAP2 POP PUSH1 0x0 PUSH2 0x3903 PUSH32 0x0 DUP5 DUP5 PUSH2 0x3692 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3951 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3965 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x3989 SWAP2 SWAP1 PUSH2 0x4B7F JUMP JUMPDEST POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH2 0x39EC DUP3 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x70A08231 DUP9 PUSH1 0x40 MLOAD DUP3 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0xCEC SWAP2 SWAP1 PUSH2 0x4E69 JUMP JUMPDEST SWAP4 POP PUSH2 0x39F9 DUP5 DUP4 DUP4 PUSH2 0x30F8 JUMP JUMPDEST SWAP3 POP POP POP PUSH1 0x0 PUSH1 0x2 DUP10 MLOAD SUB DUP8 LT PUSH2 0x3A10 JUMPI DUP8 PUSH2 0x3A44 JUMP JUMPDEST PUSH2 0x3A44 PUSH32 0x0 DUP7 DUP12 DUP11 PUSH1 0x2 ADD DUP2 MLOAD DUP2 LT PUSH2 0x34F2 JUMPI INVALID JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x0 DUP2 MSTORE PUSH1 0x20 DUP2 ADD SWAP2 DUP3 SWAP1 MSTORE PUSH32 0x1C6DA72400000000000000000000000000000000000000000000000000000000 SWAP1 SWAP2 MSTORE SWAP1 SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP1 PUSH4 0x1C6DA724 SWAP1 PUSH2 0x3AAA SWAP1 DUP6 SWAP1 DUP6 SWAP1 PUSH1 0x24 DUP2 ADD PUSH2 0x55D9 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3AC4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x3AD8 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x1 SWAP1 SWAP9 ADD SWAP8 POP PUSH2 0x3898 SWAP7 POP POP POP POP POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3B2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x4FD1 JUMP JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 PUSH1 0x2 DUP4 LT ISZERO PUSH2 0x3B70 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52C6 JUMP JUMPDEST DUP3 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x3B87 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x3BB1 JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP5 DUP2 PUSH1 0x1 DUP4 MLOAD SUB DUP2 MLOAD DUP2 LT PUSH2 0x3BC5 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH1 0x0 DUP1 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 ADD JUMPDEST DUP1 ISZERO PUSH2 0x3C9B JUMPI PUSH2 0x3C31 DUP10 DUP9 DUP9 PUSH1 0x1 DUP6 SUB DUP2 DUP2 LT PUSH2 0x3C10 JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x3C25 SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP10 DUP10 DUP6 DUP2 DUP2 LT PUSH2 0x32AC JUMPI INVALID JUMPDEST DUP7 MLOAD SWAP1 SWAP8 POP SWAP2 SWAP5 POP SWAP3 POP PUSH2 0x3C5A SWAP1 DUP6 SWAP1 DUP4 SWAP1 DUP2 LT PUSH2 0x3C4B JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP5 DUP5 PUSH2 0x3CA7 JUMP JUMPDEST DUP5 PUSH1 0x1 DUP4 SUB DUP2 MLOAD DUP2 LT PUSH2 0x3C69 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD PUSH2 0x3BF7 JUMP JUMPDEST POP POP POP SWAP5 POP SWAP5 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3CE2 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5482 JUMP JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3CF2 JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3D28 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x511B JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D34 DUP5 DUP7 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x3D42 DUP5 DUP8 PUSH2 0x3AEE JUMP JUMPDEST SWAP1 POP DUP1 PUSH2 0x3D4F DUP4 DUP3 PUSH2 0x42C6 JUMP JUMPDEST DUP2 PUSH2 0x319E JUMPI INVALID JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xA9059CBB DUP6 DUP6 PUSH1 0x40 MLOAD PUSH1 0x24 ADD PUSH2 0x3D89 SWAP3 SWAP2 SWAP1 PUSH2 0x4F67 JUMP JUMPDEST PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH1 0xE0 SHL PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD PUSH2 0x3DD7 SWAP2 SWAP1 PUSH2 0x4DCC JUMP JUMPDEST PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP7 GAS CALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x3E14 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x3E19 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 DUP1 ISZERO PUSH2 0x3E43 JUMPI POP DUP1 MLOAD ISZERO DUP1 PUSH2 0x3E43 JUMPI POP DUP1 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD DUP2 ADD SWAP1 PUSH2 0x3E43 SWAP2 SWAP1 PUSH2 0x4B35 JUMP JUMPDEST PUSH2 0x3E79 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5008 JUMP JUMPDEST POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP5 GT PUSH2 0x3EBB JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5269 JUMP JUMPDEST PUSH1 0x0 DUP4 GT DUP1 ISZERO PUSH2 0x3ECB JUMPI POP PUSH1 0x0 DUP3 GT JUMPDEST PUSH2 0x3F01 JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x511B JUMP JUMPDEST DUP3 PUSH2 0x3F0C DUP6 DUP5 PUSH2 0x3F1C JUMP JUMPDEST DUP2 PUSH2 0x3F13 JUMPI INVALID JUMPDEST DIV SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x3F37 JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x3F34 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x3B2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x50E4 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH32 0x0 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xE6A43905 DUP9 DUP9 PUSH1 0x40 MLOAD DUP4 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x3FCD SWAP3 SWAP2 SWAP1 PUSH2 0x4F09 JUMP JUMPDEST PUSH1 0x20 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x3FE5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x3FF9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x401D SWAP2 SWAP1 PUSH2 0x46A9 JUMP JUMPDEST SWAP1 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND PUSH2 0x406C JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5599 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x40B5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x40C9 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x40ED SWAP2 SWAP1 PUSH2 0x4B7F JUMP JUMPDEST POP POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND SWAP2 POP DUP2 PUSH1 0x0 EQ DUP1 ISZERO PUSH2 0x4121 JUMPI POP DUP1 ISZERO JUMPDEST ISZERO PUSH2 0x4131 JUMPI DUP7 SWAP5 POP DUP6 SWAP4 POP PUSH2 0x4173 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x413E DUP9 DUP5 DUP5 PUSH2 0x3E80 JUMP JUMPDEST SWAP1 POP DUP7 DUP2 GT PUSH2 0x4152 JUMPI DUP8 SWAP6 POP SWAP4 POP DUP4 PUSH2 0x4171 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x415F DUP9 DUP5 DUP7 PUSH2 0x3E80 JUMP JUMPDEST SWAP1 POP DUP9 DUP2 GT ISZERO PUSH2 0x416B JUMPI INVALID JUMPDEST SWAP6 POP DUP7 SWAP5 POP JUMPDEST POP JUMPDEST POP POP SWAP5 POP SWAP5 POP SWAP5 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x60 PUSH1 0x2 DUP3 LT ISZERO PUSH2 0x41BC JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x52C6 JUMP JUMPDEST DUP2 PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT DUP1 ISZERO PUSH2 0x41D3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD SWAP1 DUP1 DUP3 MSTORE DUP1 PUSH1 0x20 MUL PUSH1 0x20 ADD DUP3 ADD PUSH1 0x40 MSTORE DUP1 ISZERO PUSH2 0x41FD JUMPI DUP2 PUSH1 0x20 ADD PUSH1 0x20 DUP3 MUL DUP1 CALLDATASIZE DUP4 CALLDATACOPY ADD SWAP1 POP JUMPDEST POP SWAP1 POP DUP4 DUP2 PUSH1 0x0 DUP2 MLOAD DUP2 LT PUSH2 0x420E JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD DUP2 DUP2 MSTORE POP POP PUSH1 0x0 JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 ADD DUP2 LT ISZERO PUSH2 0x388C JUMPI PUSH1 0x0 DUP1 PUSH2 0x427E DUP9 DUP8 DUP8 DUP7 DUP2 DUP2 LT PUSH2 0x425A JUMPI INVALID JUMPDEST SWAP1 POP PUSH1 0x20 MUL ADD PUSH1 0x20 DUP2 ADD SWAP1 PUSH2 0x426F SWAP2 SWAP1 PUSH2 0x4686 JUMP JUMPDEST DUP9 DUP9 DUP8 PUSH1 0x1 ADD DUP2 DUP2 LT PUSH2 0x380B JUMPI INVALID JUMPDEST POP POP SWAP2 POP SWAP2 POP PUSH2 0x42A2 DUP5 DUP5 DUP2 MLOAD DUP2 LT PUSH2 0x4293 JUMPI INVALID JUMPDEST PUSH1 0x20 MUL PUSH1 0x20 ADD ADD MLOAD DUP4 DUP4 PUSH2 0x30F8 JUMP JUMPDEST DUP5 DUP5 PUSH1 0x1 ADD DUP2 MLOAD DUP2 LT PUSH2 0x42B1 JUMPI INVALID JUMPDEST PUSH1 0x20 SWAP1 DUP2 MUL SWAP2 SWAP1 SWAP2 ADD ADD MSTORE POP POP PUSH1 0x1 ADD PUSH2 0x421D JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3B2B JUMPI PUSH1 0x40 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x4 ADD PUSH2 0x589 SWAP1 PUSH2 0x5178 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x4313 DUP7 DUP7 DUP7 PUSH2 0x44F2 JUMP JUMPDEST POP SWAP2 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x0 DUP1 DUP1 DUP1 PUSH2 0x432B DUP11 DUP10 DUP12 PUSH2 0x44F2 JUMP JUMPDEST SWAP3 SWAP7 POP SWAP1 SWAP5 POP SWAP3 POP SWAP1 POP PUSH1 0x0 PUSH2 0x4341 DUP9 DUP7 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x434F DUP9 DUP7 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH2 0x435B DUP2 DUP5 PUSH2 0x3F1C JUMP JUMPDEST PUSH2 0x4367 DUP4 PUSH2 0x2710 PUSH2 0x3F1C JUMP JUMPDEST GT ISZERO PUSH2 0x44E3 JUMPI PUSH1 0x0 PUSH2 0x4379 DUP4 DUP4 PUSH2 0x3AEE JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x4392 PUSH1 0x2 PUSH2 0x438C DUP14 DUP11 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 PUSH2 0x3F1C JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x43A5 PUSH1 0x2 PUSH2 0x438C DUP14 DUP13 PUSH2 0x42C6 JUMP JUMPDEST SWAP1 POP PUSH2 0x43BC DUP15 DUP12 DUP10 DUP5 DUP8 DUP2 PUSH2 0x43B6 JUMPI INVALID JUMPDEST DIV PUSH2 0x3322 JUMP JUMPDEST PUSH2 0x43CB DUP14 DUP9 DUP13 DUP6 DUP8 DUP2 PUSH2 0x43B6 JUMPI INVALID JUMPDEST DUP10 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFFF6CAE9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4412 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x4426 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x444A SWAP2 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST POP POP DUP7 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFFF6CAE9 PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x40 DUP1 MLOAD DUP1 DUP4 SUB DUP2 PUSH1 0x0 DUP8 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x4493 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS CALL ISZERO DUP1 ISZERO PUSH2 0x44A7 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x44CB SWAP2 SWAP1 PUSH2 0x4B51 JUMP JUMPDEST POP POP PUSH2 0x44D8 DUP16 DUP16 DUP16 PUSH2 0x44F2 JUMP JUMPDEST POP SWAP2 SWAP14 POP SWAP12 POP POP POP POP POP JUMPDEST POP POP POP POP POP POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x4503 DUP8 DUP8 DUP8 PUSH2 0x3692 JUMP JUMPDEST SWAP2 POP DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x902F1AC PUSH1 0x40 MLOAD DUP2 PUSH4 0xFFFFFFFF AND PUSH1 0xE0 SHL DUP2 MSTORE PUSH1 0x4 ADD PUSH1 0x80 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP7 DUP1 EXTCODESIZE ISZERO DUP1 ISZERO PUSH2 0x454B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x455F JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP POP POP PUSH1 0x40 MLOAD RETURNDATASIZE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND DUP3 ADD DUP1 PUSH1 0x40 MSTORE POP DUP2 ADD SWAP1 PUSH2 0x4583 SWAP2 SWAP1 PUSH2 0x4B7F JUMP JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND SWAP12 SWAP3 SWAP1 SWAP4 AND SWAP10 POP SWAP4 SWAP8 POP SWAP1 SWAP6 POP SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xC0 DUP2 ADD DUP3 MSTORE PUSH1 0x0 DUP1 DUP3 MSTORE PUSH1 0x20 DUP3 ADD DUP2 SWAP1 MSTORE SWAP2 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x60 DUP2 ADD DUP3 SWAP1 MSTORE PUSH1 0x80 DUP2 ADD DUP3 SWAP1 MSTORE SWAP1 PUSH1 0xA0 DUP3 ADD MSTORE SWAP1 JUMP JUMPDEST DUP1 MLOAD PUSH2 0x3B2B DUP2 PUSH2 0x56A3 JUMP JUMPDEST PUSH1 0x0 DUP1 DUP4 PUSH1 0x1F DUP5 ADD SLT PUSH2 0x45F8 JUMPI DUP2 DUP3 REVERT JUMPDEST POP DUP2 CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x460F JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH1 0x20 DUP4 ADD SWAP2 POP DUP4 PUSH1 0x20 DUP1 DUP4 MUL DUP6 ADD ADD GT ISZERO PUSH2 0x4629 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST DUP1 MLOAD PUSH1 0x6 DUP2 LT PUSH2 0x3B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 MLOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x3B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD PUSH1 0xFF DUP2 AND DUP2 EQ PUSH2 0x3B2B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4697 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 CALLDATALOAD PUSH2 0x46A2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x46BA JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x46A2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x46D7 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x46E2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x46F3 DUP2 PUSH2 0x56A3 JUMP JUMPDEST DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4718 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4723 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD PUSH2 0x4733 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x4758 DUP2 PUSH2 0x56A3 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xC0 DUP9 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP2 SWAP5 SWAP8 POP SWAP3 SWAP6 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x160 DUP13 DUP15 SUB SLT ISZERO PUSH2 0x4790 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP12 CALLDATALOAD PUSH2 0x479B DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP11 POP PUSH1 0x20 DUP13 ADD CALLDATALOAD PUSH2 0x47AB DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP10 POP PUSH1 0x40 DUP13 ADD CALLDATALOAD SWAP9 POP PUSH1 0x60 DUP13 ADD CALLDATALOAD SWAP8 POP PUSH1 0x80 DUP13 ADD CALLDATALOAD SWAP7 POP PUSH1 0xA0 DUP13 ADD CALLDATALOAD PUSH2 0x47D0 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP6 POP PUSH1 0xC0 DUP13 ADD CALLDATALOAD SWAP5 POP PUSH1 0xE0 DUP13 ADD CALLDATALOAD PUSH2 0x47E7 DUP2 PUSH2 0x56C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x47F7 DUP14 PUSH2 0x100 DUP15 ADD PUSH2 0x4675 JUMP JUMPDEST SWAP3 POP PUSH2 0x120 DUP13 ADD CALLDATALOAD SWAP2 POP PUSH2 0x140 DUP13 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP1 SWAP4 SWAP7 SWAP10 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x100 DUP10 DUP12 SUB SLT ISZERO PUSH2 0x4835 JUMPI DUP4 DUP5 REVERT JUMPDEST DUP9 CALLDATALOAD PUSH2 0x4840 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP8 POP PUSH1 0x20 DUP10 ADD CALLDATALOAD PUSH2 0x4850 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP7 POP PUSH1 0x40 DUP10 ADD CALLDATALOAD SWAP6 POP PUSH1 0x60 DUP10 ADD CALLDATALOAD SWAP5 POP PUSH1 0x80 DUP10 ADD CALLDATALOAD SWAP4 POP PUSH1 0xA0 DUP10 ADD CALLDATALOAD SWAP3 POP PUSH1 0xC0 DUP10 ADD CALLDATALOAD PUSH2 0x487C DUP2 PUSH2 0x56A3 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0xE0 DUP10 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 SWAP1 SWAP4 SWAP7 POP JUMP JUMPDEST PUSH1 0x0 DUP1 DUP3 DUP5 SUB PUSH1 0xE0 DUP2 SLT ISZERO PUSH2 0x48A7 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP4 MLOAD PUSH2 0x48B2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP3 POP PUSH1 0xC0 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP3 ADD SLT ISZERO PUSH2 0x48E3 JUMPI DUP2 DUP3 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH1 0xC0 DUP2 ADD DUP2 DUP2 LT PUSH8 0xFFFFFFFFFFFFFFFF DUP3 GT OR ISZERO PUSH2 0x4903 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x40 MSTORE PUSH2 0x4913 DUP6 PUSH1 0x20 DUP7 ADD PUSH2 0x45DC JUMP JUMPDEST DUP2 MSTORE PUSH2 0x4922 DUP6 PUSH1 0x40 DUP7 ADD PUSH2 0x45DC JUMP JUMPDEST PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x60 DUP5 ADD MLOAD PUSH1 0x40 DUP3 ADD MSTORE PUSH2 0x493E DUP6 PUSH1 0x80 DUP7 ADD PUSH2 0x465D JUMP JUMPDEST PUSH1 0x60 DUP3 ADD MSTORE PUSH2 0x4950 DUP6 PUSH1 0xA0 DUP7 ADD PUSH2 0x465D JUMP JUMPDEST PUSH1 0x80 DUP3 ADD MSTORE PUSH2 0x4962 DUP6 PUSH1 0xC0 DUP7 ADD PUSH2 0x4630 JUMP JUMPDEST PUSH1 0xA0 DUP3 ADD MSTORE DUP1 SWAP2 POP POP SWAP3 POP SWAP3 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xA0 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4989 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD PUSH2 0x4994 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 DUP7 ADD CALLDATALOAD SWAP3 POP PUSH1 0x60 DUP7 ADD CALLDATALOAD PUSH2 0x49B2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x80 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH2 0x120 DUP11 DUP13 SUB SLT ISZERO PUSH2 0x49E1 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP10 CALLDATALOAD PUSH2 0x49EC DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP9 POP PUSH1 0x20 DUP11 ADD CALLDATALOAD SWAP8 POP PUSH1 0x40 DUP11 ADD CALLDATALOAD SWAP7 POP PUSH1 0x60 DUP11 ADD CALLDATALOAD PUSH2 0x4A0A DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP6 POP PUSH1 0x80 DUP11 ADD CALLDATALOAD SWAP5 POP PUSH1 0xA0 DUP11 ADD CALLDATALOAD PUSH2 0x4A21 DUP2 PUSH2 0x56C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x4A30 DUP12 PUSH1 0xC0 DUP13 ADD PUSH2 0x4675 JUMP JUMPDEST SWAP3 POP PUSH1 0xE0 DUP11 ADD CALLDATALOAD SWAP2 POP PUSH2 0x100 DUP11 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 POP SWAP3 SWAP6 SWAP9 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH2 0x140 DUP12 DUP14 SUB SLT ISZERO PUSH2 0x4A6D JUMPI DUP4 DUP5 REVERT JUMPDEST DUP11 CALLDATALOAD PUSH2 0x4A78 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP10 POP PUSH1 0x20 DUP12 ADD CALLDATALOAD SWAP9 POP PUSH1 0x40 DUP12 ADD CALLDATALOAD SWAP8 POP PUSH1 0x60 DUP12 ADD CALLDATALOAD SWAP7 POP PUSH1 0x80 DUP12 ADD CALLDATALOAD PUSH2 0x4A9D DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP6 POP PUSH1 0xA0 DUP12 ADD CALLDATALOAD SWAP5 POP PUSH1 0xC0 DUP12 ADD CALLDATALOAD PUSH2 0x4AB4 DUP2 PUSH2 0x56C8 JUMP JUMPDEST SWAP4 POP PUSH2 0x4AC3 DUP13 PUSH1 0xE0 DUP14 ADD PUSH2 0x4675 JUMP JUMPDEST SWAP3 POP PUSH2 0x100 DUP12 ADD CALLDATALOAD SWAP2 POP PUSH2 0x120 DUP12 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 SWAP9 SWAP12 SWAP2 SWAP5 SWAP8 SWAP11 POP SWAP3 SWAP6 SWAP9 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0xE0 DUP9 DUP11 SUB SLT ISZERO PUSH2 0x4AFE JUMPI DUP1 DUP2 REVERT JUMPDEST DUP8 CALLDATALOAD PUSH2 0x4B09 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP7 POP PUSH1 0x20 DUP9 ADD CALLDATALOAD SWAP6 POP PUSH1 0x40 DUP9 ADD CALLDATALOAD SWAP5 POP PUSH1 0x60 DUP9 ADD CALLDATALOAD SWAP4 POP PUSH1 0x80 DUP9 ADD CALLDATALOAD SWAP3 POP PUSH1 0xA0 DUP9 ADD CALLDATALOAD PUSH2 0x4758 DUP2 PUSH2 0x56A3 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4B46 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP2 MLOAD PUSH2 0x46A2 DUP2 PUSH2 0x56C8 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4B63 JUMPI DUP2 DUP3 REVERT JUMPDEST DUP3 MLOAD PUSH2 0x4B6E DUP2 PUSH2 0x56D6 JUMP JUMPDEST PUSH1 0x20 DUP5 ADD MLOAD SWAP1 SWAP3 POP PUSH2 0x46F3 DUP2 PUSH2 0x56D6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x80 DUP6 DUP8 SUB SLT ISZERO PUSH2 0x4B94 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4B9E DUP7 DUP7 PUSH2 0x463F JUMP JUMPDEST SWAP4 POP PUSH2 0x4BAD DUP7 PUSH1 0x20 DUP8 ADD PUSH2 0x463F JUMP JUMPDEST SWAP3 POP PUSH1 0x40 DUP6 ADD MLOAD PUSH4 0xFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x4BC5 JUMPI DUP3 DUP4 REVERT JUMPDEST PUSH1 0x60 SWAP6 SWAP1 SWAP6 ADD MLOAD SWAP4 SWAP7 SWAP3 SWAP6 POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x20 DUP3 DUP5 SUB SLT ISZERO PUSH2 0x4BE6 JUMPI DUP1 DUP2 REVERT JUMPDEST POP MLOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4C01 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH2 0x4C13 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP3 SWAP6 SWAP3 SWAP5 POP POP POP PUSH1 0x40 SWAP2 SWAP1 SWAP2 ADD CALLDATALOAD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x40 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4C38 JUMPI DUP1 DUP2 REVERT JUMPDEST DUP4 CALLDATALOAD SWAP3 POP PUSH1 0x20 DUP5 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4C55 JUMPI DUP2 DUP3 REVERT JUMPDEST PUSH2 0x4C61 DUP7 DUP3 DUP8 ADD PUSH2 0x45E7 JUMP JUMPDEST SWAP5 SWAP8 SWAP1 SWAP7 POP SWAP4 SWAP5 POP POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x80 DUP7 DUP9 SUB SLT ISZERO PUSH2 0x4C85 JUMPI DUP3 DUP4 REVERT JUMPDEST DUP6 CALLDATALOAD SWAP5 POP PUSH1 0x20 DUP7 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4CA2 JUMPI DUP4 DUP5 REVERT JUMPDEST PUSH2 0x4CAE DUP9 DUP3 DUP10 ADD PUSH2 0x45E7 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x40 DUP7 ADD CALLDATALOAD PUSH2 0x4CC2 DUP2 PUSH2 0x56A3 JUMP JUMPDEST SWAP5 SWAP8 SWAP4 SWAP7 POP SWAP2 SWAP5 PUSH1 0x60 ADD CALLDATALOAD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x40 DUP4 DUP6 SUB SLT ISZERO PUSH2 0x4CE5 JUMPI DUP2 DUP3 REVERT JUMPDEST POP POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD SWAP1 SWAP3 SWAP1 SWAP2 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0x0 DUP1 PUSH1 0xA0 DUP8 DUP10 SUB SLT ISZERO PUSH2 0x4D0E JUMPI DUP4 DUP5 REVERT JUMPDEST DUP7 CALLDATALOAD SWAP6 POP PUSH1 0x20 DUP8 ADD CALLDATALOAD SWAP5 POP PUSH1 0x40 DUP8 ADD CALLDATALOAD PUSH8 0xFFFFFFFFFFFFFFFF DUP2 GT ISZERO PUSH2 0x4D32 JUMPI DUP5 DUP6 REVERT JUMPDEST PUSH2 0x4D3E DUP10 DUP3 DUP11 ADD PUSH2 0x45E7 JUMP JUMPDEST SWAP1 SWAP6 POP SWAP4 POP POP PUSH1 0x60 DUP8 ADD CALLDATALOAD PUSH2 0x4D52 DUP2 PUSH2 0x56A3 JUMP JUMPDEST DUP1 SWAP3 POP POP PUSH1 0x80 DUP8 ADD CALLDATALOAD SWAP1 POP SWAP3 SWAP6 POP SWAP3 SWAP6 POP SWAP3 SWAP6 JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 PUSH1 0x60 DUP5 DUP7 SUB SLT ISZERO PUSH2 0x4D7B JUMPI DUP1 DUP2 REVERT JUMPDEST POP POP DUP2 CALLDATALOAD SWAP4 PUSH1 0x20 DUP4 ADD CALLDATALOAD SWAP4 POP PUSH1 0x40 SWAP1 SWAP3 ADD CALLDATALOAD SWAP2 SWAP1 POP JUMP JUMPDEST PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 PUSH1 0x60 SWAP4 DUP5 SHL DUP2 AND DUP3 MSTORE SWAP2 SWAP1 SWAP3 SHL AND PUSH1 0x14 DUP3 ADD MSTORE PUSH1 0x28 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP3 MLOAD PUSH2 0x4DDE DUP2 DUP5 PUSH1 0x20 DUP8 ADD PUSH2 0x5677 JUMP JUMPDEST SWAP2 SWAP1 SWAP2 ADD SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH32 0xFF00000000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x60 SWAP3 SWAP1 SWAP3 SHL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000000000000000000000 AND PUSH1 0x1 DUP4 ADD MSTORE PUSH1 0x15 DUP3 ADD MSTORE PUSH32 0xBAEAE6B526D52AB9EDEA88A8A5991ED61443A0C4D6BEA03DC99971664961F4B7 PUSH1 0x35 DUP3 ADD MSTORE PUSH1 0x55 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP2 SWAP1 SWAP2 AND DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP8 DUP9 AND DUP2 MSTORE SWAP6 SWAP1 SWAP7 AND PUSH1 0x20 DUP7 ADD MSTORE PUSH1 0x40 DUP6 ADD SWAP4 SWAP1 SWAP4 MSTORE PUSH1 0x60 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xFF AND PUSH1 0x80 DUP4 ADD MSTORE PUSH1 0xA0 DUP3 ADD MSTORE PUSH1 0xC0 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0xE0 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP4 DUP5 AND DUP2 MSTORE SWAP2 SWAP1 SWAP3 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 DUP4 AND DUP2 MSTORE SWAP2 AND PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP5 DUP6 AND DUP2 MSTORE SWAP3 DUP5 AND PUSH1 0x20 DUP5 ADD MSTORE SWAP3 AND PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 DUP2 ADD SWAP2 SWAP1 SWAP2 MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP3 SWAP1 SWAP3 AND DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE DUP3 MLOAD DUP3 DUP3 ADD DUP2 SWAP1 MSTORE PUSH1 0x0 SWAP2 SWAP1 DUP5 DUP3 ADD SWAP1 PUSH1 0x40 DUP6 ADD SWAP1 DUP5 JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x4FC5 JUMPI DUP4 MLOAD DUP4 MSTORE SWAP3 DUP5 ADD SWAP3 SWAP2 DUP5 ADD SWAP2 PUSH1 0x1 ADD PUSH2 0x4FA9 JUMP JUMPDEST POP SWAP1 SWAP7 SWAP6 POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1F SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F4641494C454400 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1A SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20494E56414C49445F50415448000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x15 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20455850495245440000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761703A204E4F5420414C4C4F57454400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x25 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E53554646494349454E545F4C495155 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4944495459000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x14 SWAP1 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E53554646494349454E545F494E5055 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x545F414D4F554E54000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x28 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20494E53554646494349454E545F4F55545055 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x545F414D4F554E54000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x22 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E53554646494349454E545F414D4F55 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4E54000000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x1B SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E56414C49445F504154480000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A204558434553534956455F494E5055545F414D PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4F554E5400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x17 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761703A204E4F5420544F4B454E204F574E4552000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20494E53554646494349454E545F425F414D4F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x554E540000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x11 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761703A20524154494F20454552000000000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A204554485F5452414E534645525F464149 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x4C45440000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x29 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761704C6962726172793A20494E53554646494349454E545F4F555450 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x55545F414D4F554E540000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x23 SWAP1 DUP3 ADD MSTORE PUSH32 0x466553776170526F757465723A20494E53554646494349454E545F415F414D4F PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x554E540000000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x24 SWAP1 DUP3 ADD MSTORE PUSH32 0x5472616E7366657248656C7065723A205452414E534645525F46524F4D5F4641 PUSH1 0x40 DUP3 ADD MSTORE PUSH32 0x494C454400000000000000000000000000000000000000000000000000000000 PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x20 DUP1 DUP3 MSTORE PUSH1 0x13 SWAP1 DUP3 ADD MSTORE PUSH32 0x4665537761703A204E4F54204352454154454400000000000000000000000000 PUSH1 0x40 DUP3 ADD MSTORE PUSH1 0x60 ADD SWAP1 JUMP JUMPDEST SWAP1 DUP2 MSTORE PUSH1 0x20 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 DUP5 DUP3 MSTORE PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x20 DUP4 ADD MSTORE PUSH1 0x60 PUSH1 0x40 DUP4 ADD MSTORE DUP3 MLOAD DUP1 PUSH1 0x60 DUP5 ADD MSTORE PUSH2 0x561A DUP2 PUSH1 0x80 DUP6 ADD PUSH1 0x20 DUP8 ADD PUSH2 0x5677 JUMP JUMPDEST PUSH1 0x1F ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 AND SWAP2 SWAP1 SWAP2 ADD PUSH1 0x80 ADD SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST SWAP2 DUP3 MSTORE PUSH1 0x20 DUP3 ADD MSTORE PUSH1 0x40 ADD SWAP1 JUMP JUMPDEST SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x40 DUP4 ADD MSTORE PUSH1 0x60 DUP3 ADD MSTORE PUSH1 0x80 ADD SWAP1 JUMP JUMPDEST PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x5692 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x567A JUMP JUMPDEST DUP4 DUP2 GT ISZERO PUSH2 0x35D3 JUMPI POP POP PUSH1 0x0 SWAP2 ADD MSTORE JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x56C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP JUMP JUMPDEST DUP1 ISZERO ISZERO DUP2 EQ PUSH2 0x56C5 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH14 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND DUP2 EQ PUSH2 0x56C5 JUMPI PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 COINBASE DELEGATECALL 0xB4 SWAP6 PUSH31 0x4772E5653C3C9221462BCCC6B173672DDCC040D0B30600931CBB8764736F6C PUSH4 0x4300060C STOP CALLER ",
          "sourceMap": "976:20304:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1543:10;:18;1557:4;1543:18;;1536:26;;;;976:20304;;;;;20322:231;;;;;;;;;;-1:-1:-1;20322:231:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15128:792;;;;;;;;;;-1:-1:-1;15128:792:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8865:743::-;;;;;;;;;;-1:-1:-1;8865:743:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;21041:234::-;;;;;;;;;;-1:-1:-1;21041:234:3;;;;;:::i;:::-;;:::i;12469:598::-;;;;;;;;;;-1:-1:-1;12469:598:3;;;;;:::i;:::-;;:::i;17744:682::-;;;;;;;;;;-1:-1:-1;17744:682:3;;;;;:::i;:::-;;:::i;14350:770::-;;;;;;;;;;-1:-1:-1;14350:770:3;;;;;:::i;:::-;;:::i;11153:657::-;;;;;;;;;;-1:-1:-1;11153:657:3;;;;;:::i;:::-;;:::i;1668:664::-;;;;;;;;;;-1:-1:-1;1668:664:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;13658:684::-;;;;;;:::i;:::-;;:::i;20561:230::-;;;;;;;;;;-1:-1:-1;20561:230:3;;;;;:::i;:::-;;:::i;13075:575::-;;;;;;;;;;-1:-1:-1;13075:575:3;;;;;:::i;:::-;;:::i;10382:765::-;;;;;;;;;;-1:-1:-1;10382:765:3;;;;;:::i;:::-;;:::i;6937:1175::-;;;;;;;;;;-1:-1:-1;6937:1175:3;;;;;:::i;:::-;;:::i;19253:808::-;;;;;;;;;;-1:-1:-1;19253:808:3;;;;;:::i;:::-;;:::i;1150:38::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20105:209::-;;;;;;;;;;-1:-1:-1;20105:209:3;;;;;:::i;:::-;;:::i;8118:741::-;;;;;;;;;;-1:-1:-1;8118:741:3;;;;;:::i;:::-;;:::i;3493:1666::-;;;;;;;;;;-1:-1:-1;3493:1666:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;1053:41::-;;;;;;;;;;;;;:::i;18432:815::-;;;;;;:::i;:::-;;:::i;9614:695::-;;;;;;;;;;-1:-1:-1;9614:695:3;;;;;:::i;:::-;;:::i;1101:42::-;;;;;;;;;;;;;:::i;20799:234::-;;;;;;;;;;-1:-1:-1;20799:234:3;;;;;:::i;:::-;;:::i;15928:767::-;;;;;;:::i;:::-;;:::i;5167:1727::-;;;;;;:::i;:::-;;:::i;20322:231::-;20447:14;20486:59;20513:8;20523:9;20534:10;20486:26;:59::i;:::-;20479:66;20322:231;-1:-1:-1;;;;20322:231:3:o;15128:792::-;15315:21;15287:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15362:29:::1;15387:4;15362:29;:4:::0;;15367:15;;;15362:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;15354:68;;;;;;;;;;;;:::i;:::-;15433:18;15486:52;15514:7;15523:8;15533:4;;15486:27;:52::i;:::-;15462:76;;;;;;;;15588:12;15557:7;15582:1;15565:7;:14;:18;15557:27;;;;;;;;;;;;;;:43;;15549:96;;;;;;;;;;;;:::i;:::-;15656:76;15688:4;;15693:1;15688:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;15697:10;15709;15721:7;15729:1;15721:10;;;;;;;;;;;;;;15656:31;:76::i;:::-;15743:35;15749:7;15758:4;;15743:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;15772:4:3::1;::::0;-1:-1:-1;15743:5:3::1;::::0;-1:-1:-1;;15743:35:3:i:1;:::-;15795:4;15789:20;;;15810:7;15835:1;15818:7;:14;:18;15810:27;;;;;;;;;;;;;;15789:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15849:63;15880:2;15884:7;15909:1;15892:7;:14;:18;15884:27;;;;;;;;;;;;;;15849:30;:63::i;:::-;1311:1;15128:792:::0;;;;;;;;;:::o;8865:743::-;9174:12;9188;9247:15;9265:46;9287:7;9296:6;9304;9265:21;:46::i;:::-;9247:64;;9326:10;9339;:36;;9363:12;9339:36;;;9357:2;9339:36;9391:80;;;;;9326:49;;-1:-1:-1;9391:27:3;;;;;;:80;;9419:10;;9439:4;;9326:49;;9453:8;;9463:1;;9466;;9469;;9391:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8865:743;;9514:86;9530:6;9538;9546:12;9560:1;9563:10;9575;9587:2;9591:8;9514:15;:86::i;:::-;9493:107;;;;-1:-1:-1;8865:743:3;-1:-1:-1;;;;;;;;;;;;8865:743:3:o;21041:234::-;21164:21;21210:57;21242:7;21251:9;21262:4;;21210:31;:57::i;12469:598::-;12693:21;12674:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;12727:17:::1;12778:52;12806:7;12815:8;12825:4;;12778:27;:52::i;:::-;12755:75;;;;;;;;12880:12;12849:7;12874:1;12857:7;:14;:18;12849:27;;;;;;;;;;;;;;:43;;12841:96;;;;;;;;;;;;:::i;:::-;12948:76;12980:4;;12985:1;12980:7;;;;;;12948:76;13035:24;13041:7;13050:4;;13035:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;13056:2:3;;-1:-1:-1;13035:5:3::1;::::0;-1:-1:-1;;13035:24:3:i:1;17744:682::-:0;17962:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;17983:136:::1;18029:4;;18034:1;18029:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;18038:10;18050:48;18072:7;18081:4;;18086:1;18081:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;18090:4;;18095:1;18090:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;18050:21;:48::i;:::-;18100:8;17983:31;:136::i;:::-;18130:18;18158:4:::0;;18163:15;;;18158:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;18151:39;;;18191:2;18151:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18130:64;;18205:34;18230:4;;18205:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;18236:2:3;;-1:-1:-1;18205:24:3::1;::::0;-1:-1:-1;;18205:34:3:i:1;:::-;18338:12:::0;18272:62:::1;18320:13:::0;18279:4;;18284:15;;;18279:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;18272:39;;;18312:2;18272:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47:::0;::::1;:62::i;:::-;:78;;18250:168;;;;;;;;;;;;:::i;:::-;1311:1;17744:682:::0;;;;;;;:::o;14350:770::-;14537:21;14509:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;14584:29:::1;14609:4;14584:29;:4:::0;;14589:15;;;14584:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;14576:68;;;;;;;;;;;;:::i;:::-;14655:18;14708:52;14735:7;14744:9;14755:4;;14708:26;:52::i;:::-;14684:76;;;;;;;;14793:11;14779:7;14787:1;14779:10;;;;;;;;;;;;;;:25;;14771:74;;;;;;;;;;;;:::i;11153:657::-:0;11436:14;11463:12;11478:43;11500:7;11509:5;11516:4;11478:21;:43::i;:::-;11463:58;;11532:10;11545;:36;;11569:12;11545:36;;;11563:2;11545:36;11592:77;;;;;11532:49;;-1:-1:-1;11592:24:3;;;;;;:77;;11617:10;;11637:4;;11532:49;;11651:8;;11661:1;;11664;;11667;;11592:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11692:110;11738:5;11745:12;11759;11773:1;11776;11779:2;11783:8;11692:31;:110::i;:::-;11680:122;11153:657;-1:-1:-1;;;;;;;;;;;;11153:657:3:o;1668:664::-;1823:15;1840;1875:16;1893:27;;:::i;:::-;1924:40;;;;;:31;1934:8;1924:31;;;;:40;;1956:7;;1924:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1874:90;;-1:-1:-1;1874:90:3;-1:-1:-1;1983:10:3;:22;;;;1975:58;;;;;;;;;;;;:::i;:::-;2076:27;2052:10;:20;;;:51;;;;;;;;;;2044:83;;;;;;;;;;;;:::i;:::-;2174:17;;2193;;;;2243:80;;;;;:40;2258:7;2243:40;;;;:80;;2174:17;;2193;;2300:9;;2311:11;;2243:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2222:101;;;;-1:-1:-1;1668:664:3;-1:-1:-1;;;;;;;;1668:664:3:o;13658:684::-;13838:21;13810:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;13896:4:::1;13885:15;;:4;;13890:1;13885:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;:15;;;13877:54;;;;;;;;;;;;:::i;:::-;13942:18;13995:53;14023:7;14032:9;14043:4;;13995:27;:53::i;:::-;13971:77;;;;;;;;14128:12;14097:7;14122:1;14105:7;:14;:18;14097:27;;;;;;;;;;;;;;:43;;14089:96;;;;;;;;;;;;:::i;:::-;14202:4;14196:19;;;14223:7;14231:1;14223:10;;;;;;;;;;;;;;14196:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;14260:4;14254:20;;;14275:10;14287:7;14295:1;14287:10;;;;;;;;;;;;;;14254:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14247:52;;;;14310:24;14316:7;14325:4;;14310:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14331:2:3;;-1:-1:-1;14310:5:3::1;::::0;-1:-1:-1;;14310:24:3:i:1;:::-;1311:1;13658:684:::0;;;;;;;;:::o;20561:230::-;20686:13;20724:59;20750:9;20761;20772:10;20724:25;:59::i;13075:575::-;13299:21;13280:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;13333:17:::1;13384:52;13411:7;13420:9;13431:4;;13384:26;:52::i;:::-;13361:75;;;;;;;;13469:11;13455:7;13463:1;13455:10;;;;;;;;;;;;;;:25;;13447:74;;;;;;;;;;;;:::i;10382:765::-:0;10671:14;10652:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;10714:238:::1;10744:5;10764:4;10783:12;10810;10849:14;10878:12;10913:4;10933:8;10714:15;:238::i;:::-;11002:38;::::0;;;;10698:254;;-1:-1:-1;10963:78:3::1;::::0;-1:-1:-1;10991:5:3;;10998:2;;11002:23:::1;::::0;::::1;::::0;::::1;::::0;:38:::1;::::0;11034:4:::1;::::0;11002:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10963:27;:78::i;:::-;11052:31;::::0;;;;:20:::1;11058:4;11052:20;::::0;::::1;::::0;:31:::1;::::0;11073:9;;11052:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11094:45;11125:2;11129:9;11094:30;:45::i;:::-;10382:765:::0;;;;;;;;;;:::o;6937:1175::-;7230:12;7244;7211:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;7272:23;;7269:293:::1;;7312:15;7330:46;7352:7;7361:6;7369;7330:21;:46::i;:::-;7391:68;::::0;;;;7312:64;;-1:-1:-1;7391:33:3::1;::::0;::::1;::::0;::::1;::::0;:68:::1;::::0;7425:10:::1;::::0;7312:64;;7446:12;;7391:68:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7521:29:3::1;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;7547:2;;7521:29:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7500:50:::0;;-1:-1:-1;7500:50:3;-1:-1:-1;;7269:293:3::1;7575:23:::0;;7572:373:::1;;7615:15;7633:46;7655:7;7664:6;7672;7633:21;:46::i;:::-;7694:68;::::0;;;;7615:64;;-1:-1:-1;7694:33:3::1;::::0;::::1;::::0;::::1;::::0;:68:::1;::::0;7728:10:::1;::::0;7615:64;;7749:12;;7694:68:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7804:13;7819::::0;7848:7:::1;7836:25;;;7862:2;7836:29;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7880:19:::0;;;::::1;::::0;7914;;;::::1;::::0;-1:-1:-1;;;7572:373:3::1;7974:10;7963:7;:21;;7955:69;;;;;;;;;;;;:::i;:::-;8054:10;8043:7;:21;;8035:69;;;;;;;;;;;;:::i;:::-;6937:1175:::0;;;;;;;;;;;;:::o;19253:808::-;19504:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;19538:29:::1;19563:4;19538:29;:4:::0;;19543:15;;;19538:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;19530:68;;;;;;;;;;;;:::i;:::-;19609:136;19655:4;;19660:1;19655:7;;;;;;19609:136;19756:45;19781:4;;19756:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;19795:4:3::1;::::0;-1:-1:-1;19756:24:3::1;::::0;-1:-1:-1;;19756:45:3:i:1;:::-;19829:37;::::0;;;;19812:14:::1;::::0;19829:22:::1;19836:4;19829:22;::::0;::::1;::::0;:37:::1;::::0;19860:4:::1;::::0;19829:37:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19812:54;;19898:12;19885:9;:25;;19877:78;;;;;;;;;;;;:::i;:::-;19966:31;::::0;;;;:20:::1;19972:4;19966:20;::::0;::::1;::::0;:31:::1;::::0;19987:9;;19966:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20008:45;20039:2;20043:9;20008:30;:45::i;1150:38::-:0;;;:::o;20105:209::-;20220:12;20258:48;20278:7;20287:8;20297;20258:19;:48::i;8118:741::-;8393:16;8411:14;8374:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;8465:226:::1;8495:5;8515:4;8534:12;8561;8588:14;8617:12;8652:4;8672:8;8465:15;:226::i;:::-;8438:253:::0;;-1:-1:-1;8438:253:3;-1:-1:-1;8702:51:3::1;8730:5:::0;8737:2;8438:253;8702:27:::1;:51::i;:::-;8764:31;::::0;;;;:20:::1;8770:4;8764:20;::::0;::::1;::::0;:31:::1;::::0;8785:9;;8764:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8806:45;8837:2;8841:9;8806:30;:45::i;:::-;8118:741:::0;;;;;;;;;;;:::o;3493:1666::-;3778:12;3792;3806:17;3825;3741:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;3877:3:::1;3868:5;:12;;3860:43;;;;;;;;;;;;:::i;:::-;3917:16:::0;;3914:595:::1;;4034:15;4105:3;4079:25;:14:::0;4098:5;4079:18:::1;:25::i;:::-;:29;;;;;;::::0;-1:-1:-1;4165:3:3::1;4139:25;:14:::0;4158:5;4139:18:::1;:25::i;:::-;:29;;;;;;4124:44;;4213:57;4227:6;4235;4243:12;4257;4213:13;:57::i;:::-;4183:87:::0;;-1:-1:-1;4183:87:3;-1:-1:-1;4183:87:3;-1:-1:-1;4285:69:3::1;4317:6:::0;4325:10:::1;4183:87:::0;;4285:31:::1;:69::i;:::-;4369;4401:6;4409:10;4421:7;4430;4369:31;:69::i;:::-;4468:29;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;4494:2;;4468:29:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4453:44;;3914:595;;4536:3;4522:5;:18;4519:633;;4645:15;4742:77;4756:6;4764;4787:7;4772:14;:22;4811:7;4796:14;:22;4742:13;:77::i;:::-;4676:143:::0;;-1:-1:-1;4676:143:3;;-1:-1:-1;4676:143:3;-1:-1:-1;4834:76:3::1;4866:6:::0;4874:10:::1;4676:143:::0;;4834:31:::1;:76::i;:::-;4925;4957:6;4965:10;4977:7;4986:14;4925:31;:76::i;:::-;5031:29;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;5057:2;;5031:29:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5075:25:::0;;::::1;::::0;5115;;::::1;::::0;5016:44;-1:-1:-1;;4519:633:3::1;3493:1666:::0;;;;;;;;;;;;;:::o;1053:41::-;;;:::o;18432:815::-;18676:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;18721:4:::1;18710:15;;:4;;18715:1;18710:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;:15;;;18702:54;;;;;;;;;;;;:::i;:::-;18767:13;18783:9;18767:25;;18809:4;18803:19;;;18830:8;18803:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;18865:4;18859:20;;;18880:48;18902:7;18911:4;;18916:1;18911:7;;;;;;18880:48;18930:8;18859:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18852:88;;;;18951:18;18979:4:::0;;18984:15;;;18979:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;18972:39;;;19012:2;18972:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18951:64;;19026:34;19051:4;;19026:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;19057:2:3;;-1:-1:-1;19026:24:3::1;::::0;-1:-1:-1;;19026:34:3:i:1;:::-;19159:12:::0;19093:62:::1;19141:13:::0;19100:4;;19105:15;;;19100:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;19093:39;;;19133:2;19093:43;;;;;;;;;;;;;;;:::i;9614:695::-:0;9920:16;9938:14;9965:15;9983:43;10005:7;10014:5;10021:4;9983:21;:43::i;:::-;9965:61;;10037:10;10050;:36;;10074:12;10050:36;;;10068:2;10050:36;10097:80;;;;;10037:49;;-1:-1:-1;10097:27:3;;;;;;:80;;10125:10;;10145:4;;10037:49;;10159:8;;10169:1;;10172;;10175;;10097:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10215:86;10234:5;10241:12;10255:1;10258:14;10274:12;10288:2;10292:8;10215:18;:86::i;:::-;10188:113;;;;-1:-1:-1;9614:695:3;-1:-1:-1;;;;;;;;;;;;;9614:695:3:o;1101:42::-;;;:::o;20799:234::-;20922:21;20968:57;21001:7;21010:8;21020:4;;20968:32;:57::i;15928:767::-;16105:21;16077:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;16163:4:::1;16152:15;;:4;;16157:1;16152:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;:15;;;16144:54;;;;;;;;;;;;:::i;:::-;16209:18;16262:52;16289:7;16298:9;16309:4;;16262:26;:52::i;:::-;16238:76;;;;;;;;16347:9;16333:7;16341:1;16333:10;;;;;;;;;;;;;;:23;;16325:72;;;;;;;;;;;;:::i;:::-;16414:4;16408:19;;;16435:7;16443:1;16435:10;;;;;;;;;;;;;;16408:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;16472:4;16466:20;;;16487:10;16499:7;16507:1;16499:10;;;;;;;;;;;;;;16466:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16459:52;;;;16522:24;16528:7;16537:4;;16522:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;16543:2:3;;-1:-1:-1;16522:5:3::1;::::0;-1:-1:-1;;16522:24:3:i:1;:::-;16609:7;16617:1;16609:10;;;;;;;;;;;;;;16597:9;:22;16593:94;;;16621:66;16652:10;16676:7;16684:1;16676:10;;;;;;;;;;;;;;16664:9;:22;16621:30;:66::i;5167:1727::-:0;5371:16;5389:14;5405:17;5424;5334:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;5477:3:::1;5468:5;:12;;5460:43;;;;;;;;;;;;:::i;:::-;5517:16:::0;;5514:493:::1;;5558:15;5645:87;5659:5:::0;5666:4:::1;5702:3;5672:29;:18:::0;5695:5;5672:22:::1;:29::i;:::-;:33;;;;;;5728:3;5707:20;:9;5721:5:::0;5707:13:::1;:20::i;:::-;:24;;;;;;5645:13;:87::i;:::-;5588:144:::0;;-1:-1:-1;5588:144:3;-1:-1:-1;5588:144:3;-1:-1:-1;5747:72:3::1;5779:5:::0;5786:10:::1;5588:144:::0;;5747:31:::1;:72::i;:::-;5840:4;5834:19;;;5861:9;5834:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5895:40:3::1;::::0;;;;:20:::1;5901:4;5895:20;::::0;-1:-1:-1;5895:20:3::1;::::0;-1:-1:-1;5895:40:3::1;::::0;-1:-1:-1;5916:7:3;;5925:9;;5895:40:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5888:48;;;;5966:29;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;5992:2;;5966:29:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5951:44;;5514:493;;6034:3;6020:5;:18;6017:729;;6054:15;6084:21:::0;6266:80:::1;6280:4;6286:5;6303:9;6293;:19;6334:11;6315:18;:30;6266:13;:80::i;:::-;6194:152:::0;;-1:-1:-1;6194:152:3;-1:-1:-1;6194:152:3;-1:-1:-1;6361:79:3::1;6393:5:::0;6400:10:::1;6194:152:::0;;6361:31:::1;:79::i;:::-;6461:4;6455:19;;;6482:16;6455:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6523:47:3::1;::::0;;;;:20:::1;6529:4;6523:20;::::0;-1:-1:-1;6523:20:3::1;::::0;-1:-1:-1;6523:47:3::1;::::0;-1:-1:-1;6544:7:3;;6553:16;;6523:47:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6516:55;;;;6601:29;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;6627:2;;6601:29:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6650:33:::0;;::::1;::::0;6698:29;::::1;::::0;6586:44;-1:-1:-1;;6017:729:3::1;6810:9;6798;:21;6794:92;;;6821:65;6852:10;6876:9;6864;:21;6821:30;:65::i;:::-;5167:1727:::0;;;;;;;;;;;:::o;1724:436:13:-;1817:14;1863:1;1852:8;:12;1844:65;;;;;;;;;;;;:::i;:::-;1940:1;1928:9;:13;:31;;;;;1958:1;1945:10;:14;1928:31;1920:81;;;;;;;;;;;;:::i;:::-;2012:14;2029:24;:8;2042:10;2029:12;:24::i;:::-;2012:41;-1:-1:-1;2064:16:13;2083:23;:9;2097:8;2083:13;:23::i;:::-;2064:42;;2141:11;2129:9;:23;;;;;;;1724:436;-1:-1:-1;;;;;;1724:436:13:o;4101:606::-;4199:17;4218:21;4275:1;4260:16;;;4252:56;;;;;;;;;;;;:::i;:::-;4340:4;4329:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4329:23:13;;4319:33;;4376:8;4363:7;4371:1;4363:10;;;;;;;;;;;;;:21;;;;;4400:6;4395:305;4416:15;;;4412:19;;4395:305;;;4454:14;4470:15;4487:18;4509:49;4528:7;4537:4;;4542:1;4537:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;4546:4;;4551:1;4555;4551:5;4546:11;;;;;;;;;;;;;;;;;;;;:::i;:::-;4509:18;:49::i;:::-;4453:105;;;;;;4590:47;4603:7;4611:1;4603:10;;;;;;;;;;;;;;4615:9;4626:10;4590:12;:47::i;:::-;4573:7;4581:1;4585;4581:5;4573:14;;;;;;;;;;;;;;;;;:64;4657:6;4652:36;;4678:10;4666:22;;4652:36;-1:-1:-1;;;4433:3:13;;4395:305;;;;4101:606;;;;;;;:::o;944:402:18:-;1123:12;1137:17;1158:5;:10;;1192;1204:4;1210:2;1214:5;1169:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1122:99;;;;1240:7;:57;;;;-1:-1:-1;1252:11:18;;:16;;:44;;;1283:4;1272:24;;;;;;;;;;;;:::i;:::-;1232:106;;;;;;;;;;;;:::i;:::-;944:402;;;;;;:::o;11923:538:3:-;12030:6;12025:429;12060:1;12046:4;:11;:15;12042:1;:19;12025:429;;;12084:18;12104:19;12128:4;12133:1;12128:7;;;;;;;;;;;;;;12137:4;12142:1;12146;12142:5;12137:11;;;;;;;;;;;;;;12083:66;;;;12164:14;12181:7;12189:1;12193;12189:5;12181:14;;;;;;;;;;;;;;12164:31;;12210:10;12241:1;12227:4;:11;:15;12223:1;:19;:84;;12304:3;12223:84;;;12245:56;12267:7;12276:11;12289:4;12294:1;12298;12294:5;12289:11;;;;;;;;;;;;;;12245:21;:56::i;:::-;12210:97;;12334:55;12356:7;12365:10;12377:11;12334:21;:55::i;:::-;12429:12;;;12439:1;12429:12;;;;;;;;;12322:120;;;;:91;;;;;;;;:120;;12414:9;;12425:2;;12322:120;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12063:3:3;;;;;-1:-1:-1;12025:429:3;;-1:-1:-1;;;;;12025:429:3;;;11923:538;;;:::o;1354:195:18:-;1462:12;;;1424;1462;;;;;;;;;1441:7;;;;1455:5;;1441:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1423:52;;;1494:7;1486:55;;;;;;;;;;;;:::i;:::-;1354:195;;;:::o;357:422:13:-;446:12;561:7;614:6;622;597:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;587:43;;;;;;500:268;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;490:279;;500:268;490:279;;;;;357:422;-1:-1:-1;;;;357:422:13:o;6011:539::-;6119:21;6176:1;6161:16;;;6153:56;;;;;;;;;;;;:::i;:::-;6241:4;6230:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6230:23:13;;6220:33;;6294:9;6264:7;6289:1;6272:7;:14;:18;6264:27;;;;;;;;;;;;;;;;;:39;6328:15;;;6314:229;6345:5;;6314:229;;6373:14;6389:15;6411:42;6423:7;6432:4;;6441:1;6437;:5;6432:11;;;;;;;;;;;;;;;;;;;;:::i;:::-;6445:4;;6450:1;6445:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;6411:11;:42::i;:::-;6372:81;;;;;;6485:46;6497:7;6505:1;6497:10;;;;;;;;;;;;;;6509:9;6520:10;6485:11;:46::i;:::-;6468:7;6480:1;6476;:5;6468:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;6352:3:13;;6314:229;;;;6011:539;;;;;;:::o;16842:894:3:-;16945:6;16940:789;16975:1;16961:4;:11;:15;16957:1;:19;16940:789;;;16999:13;17014:14;17033:4;17038:1;17033:7;;;;;;;;;;;;;;17042:4;17047:1;17051;17047:5;17042:11;;;;;;;;;;;;;;16998:56;;;;17069:16;17100:45;17122:7;17131:5;17138:6;17100:21;:45::i;:::-;17069:77;;17161:16;17192:17;17286;17305:18;17330:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17285:63;;;;;;;;;;17381:56;17424:12;17388:5;17381:23;;;17413:4;17381:38;;;;;;;;;;;;;;;:::i;:56::-;17367:70;;17471:68;17498:11;17511:12;17525:13;17471:26;:68::i;:::-;17456:83;;16940:789;;17569:10;17600:1;17586:4;:11;:15;17582:1;:19;:79;;17658:3;17582:79;;;17604:51;17626:7;17635:6;17643:4;17648:1;17652;17648:5;17643:11;;;;;;;17604:51;17704:12;;;17714:1;17704:12;;;;;;;;;17676:41;;;;17569:92;;-1:-1:-1;17676:9:3;;;;;;:41;;17686:12;;17569:92;;17676:41;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16978:3:3;;;;;-1:-1:-1;16940:789:3;;-1:-1:-1;;;;;;;16940:789:3;333:129:17;417:5;;;412:16;;;;404:50;;;;;;;;;;;;:::i;:::-;333:129;;;;:::o;5399:604:13:-;5497:17;5516:21;5573:1;5558:16;;;5550:56;;;;;;;;;;;;:::i;:::-;5638:4;5627:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5627:23:13;;5617:33;;5691:9;5661:7;5686:1;5669:7;:14;:18;5661:27;;;;;;;;;;;;;;;;;:39;5711:14;;5776:15;;;5762:234;5793:5;;5762:234;;5857:49;5876:7;5885:4;;5894:1;5890;:5;5885:11;;;;;;;;;;;;;;;;;;;;:::i;:::-;5898:4;;5903:1;5898:7;;;;;;5857:49;5950:10;;5820:86;;-1:-1:-1;5820:86:13;;-1:-1:-1;5820:86:13;-1:-1:-1;5938:46:13;;5950:7;;5958:1;;5950:10;;;;;;;;;;;;5962:9;5973:10;5938:11;:46::i;:::-;5921:7;5933:1;5929;:5;5921:14;;;;;;;;;;;;;;;;;:63;5800:3;;5762:234;;;;5399:604;;;;;;;;;:::o;2281:513::-;2374:13;2420:1;2408:9;:13;2400:67;;;;;;;;;;;;:::i;:::-;2498:1;2486:9;:13;:31;;;;;2516:1;2503:10;:14;2486:31;2478:81;;;;;;;;;;;;:::i;:::-;2570:14;2587:24;:9;2601;2587:13;:24::i;:::-;2570:41;-1:-1:-1;2622:16:13;2641:25;:10;2656:9;2641:14;:25::i;:::-;2622:44;-1:-1:-1;2622:44:13;2745:26;:9;2622:44;2745:13;:26::i;:::-;2744:42;;;;575:361:18;724:12;738:17;759:5;:10;;793;805:2;809:5;770:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;759:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;723:93;;;;835:7;:57;;;;-1:-1:-1;847:11:18;;:16;;:44;;;878:4;867:24;;;;;;;;;;;;:::i;:::-;827:101;;;;;;;;;;;;:::i;:::-;575:361;;;;;:::o;1287:315:13:-;1369:12;1412:1;1402:7;:11;1394:58;;;;;;;;;;;;:::i;:::-;1482:1;1471:8;:12;:28;;;;;1498:1;1487:8;:12;1471:28;1463:78;;;;;;;;;;;;:::i;:::-;1586:8;1562:21;:7;1574:8;1562:11;:21::i;:::-;:32;;;;;;;1287:315;-1:-1:-1;;;;1287:315:13:o;470:142:17:-;522:6;549;;;:30;;-1:-1:-1;;564:5:17;;;578:1;573;564:5;573:1;559:15;;;;;:20;549:30;541:63;;;;;;;;;;;;:::i;2372:1113:3:-;2552:13;2567:14;2583:12;2636:7;2621:31;;;2653:7;2662:8;2621:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2614:57;-1:-1:-1;2690:18:3;;;2682:50;;;;;;;;;;;;:::i;:::-;2744:14;2760:15;2794:4;2782:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2743:70;;;;;;;;;;2828:9;2841:1;2828:14;:33;;;;-1:-1:-1;2846:15:3;;2828:33;2824:654;;;2903:15;;-1:-1:-1;2920:16:3;;-1:-1:-1;2824:654:3;;;2970:21;2994:59;3014:15;3031:9;3042:10;2994:19;:59::i;:::-;2970:83;;3092:16;3072;:36;3068:399;;3154:15;;-1:-1:-1;3171:16:3;-1:-1:-1;3171:16:3;3068:399;;;3229:20;3252:60;3272:16;3290:10;3302:9;3252:19;:60::i;:::-;3229:83;;3357:15;3338;:34;;3331:42;;;;3417:15;-1:-1:-1;3434:16:3;;-1:-1:-1;3068:399:3;2824:654;;2372:1113;;;;;;;;;;:::o;4795:523:13:-;4903:21;4960:1;4945:16;;;4937:56;;;;;;;;;;;;:::i;:::-;5025:4;5014:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5014:23:13;;5004:33;;5061:8;5048:7;5056:1;5048:10;;;;;;;;;;;;;:21;;;;;5085:6;5080:231;5101:15;;;5097:19;;5080:231;;;5139:14;5155:15;5178:42;5190:7;5199:4;;5204:1;5199:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;5208:4;;5213:1;5217;5213:5;5208:11;;;;;;5178:42;5138:82;;;;;;5252:47;5265:7;5273:1;5265:10;;;;;;;;;;;;;;5277:9;5288:10;5252:12;:47::i;:::-;5235:7;5243:1;5247;5243:5;5235:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;5118:3:13;;5080:231;;197:128:17;281:5;;;276:16;;;;268:49;;;;;;;;;;;;:::i;2802:1214:13:-;2897:14;2913:15;2930:12;2989:36;3001:7;3010:6;3018;2989:11;:36::i;:::-;-1:-1:-1;2955:70:13;;-1:-1:-1;2955:70:13;-1:-1:-1;2955:70:13;-1:-1:-1;3037:18:13;;;;3125:50;3151:7;3160:6;3168;3125:25;:50::i;:::-;3036:139;;-1:-1:-1;3036:139:13;;-1:-1:-1;3036:139:13;-1:-1:-1;3036:139:13;-1:-1:-1;3187:14:13;3204:34;3209:9;3036:139;3204:19;:34::i;:::-;3187:51;-1:-1:-1;3249:15:13;3267:36;3272:10;3288:14;3267:20;:36::i;:::-;3249:54;-1:-1:-1;3340:36:13;3249:54;3355:20;3340:14;:36::i;:::-;3317:20;:9;3331:5;3317:13;:20::i;:::-;:59;3314:695;;;3409:18;3430:25;:9;3444:10;3430:13;:25::i;:::-;3409:46;-1:-1:-1;3470:16:13;3489:44;3531:1;3490:35;3495:9;3510:14;3490:19;:35::i;:::-;3489:41;;:44::i;:::-;3470:63;-1:-1:-1;3563:16:13;3582:44;3624:1;3583:35;3588:10;3604:13;3583:20;:35::i;3582:44::-;3563:63;;3641:84;3673:6;3681:4;3687:8;3713:11;3697:13;:27;;;;;;3641:31;:84::i;:::-;3750;3782:6;3790:8;3800:4;3822:11;3806:13;:27;;;;3750:84;3862:4;3850:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3901:8;3889:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3961:36;3973:7;3982:6;3990;3961:11;:36::i;:::-;-1:-1:-1;3932:65:13;;-1:-1:-1;3932:65:13;-1:-1:-1;;;;;3314:695:13;2802:1214;;;;;;;;;;;;;:::o;837:337::-;956:13;971;986:12;1000:25;1045:32;1053:7;1062:6;1070;1045:7;:32::i;:::-;1038:39;;1147:4;1135:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1088:78;;;;;;;;;;-1:-1:-1;837:337:13;;-1:-1:-1;1088:78:13;;-1:-1:-1;837:337:13;-1:-1:-1;;;;837:337:13:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;301:352::-;;;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;-1:-1;;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;643:1;;633:12;586:2;391:262;;;;;:::o;1064:176::-;1163:13;;49073:1;49063:12;;49053:2;;49089:1;;49079:12;2451:134;2529:13;;46939:30;46928:42;;49164:35;;49154:2;;49213:1;;49203:12;3009:132;3086:13;;47356:18;47345:30;;49533:34;;49523:2;;49581:1;;49571:12;3148:126;3213:20;;47458:4;47447:16;;49654:33;;49644:2;;49701:1;;49691:12;3281:241;;3385:2;3373:9;3364:7;3360:23;3356:32;3353:2;;;-1:-1;;3391:12;3353:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3443:63;3347:175;-1:-1;;;3347:175::o;3529:263::-;;3644:2;3632:9;3623:7;3619:23;3615:32;3612:2;;;-1:-1;;3650:12;3612:2;226:6;220:13;238:33;265:5;238:33;:::i;3799:399::-;;;3931:2;3919:9;3910:7;3906:23;3902:32;3899:2;;;-1:-1;;3937:12;3899:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;4100:2;4150:22;;220:13;3989:74;;-1:-1;238:33;220:13;238:33;:::i;:::-;4108:74;;;;3893:305;;;;;:::o;4205:995::-;;;;;;;;4411:3;4399:9;4390:7;4386:23;4382:33;4379:2;;;-1:-1;;4418:12;4379:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4470:63;-1:-1;4570:2;4609:22;;72:20;97:33;72:20;97:33;:::i;:::-;4578:63;-1:-1;4678:2;4717:22;;2659:20;;-1:-1;4786:2;4825:22;;2659:20;;-1:-1;4894:3;4934:22;;2659:20;;-1:-1;5003:3;5043:22;;72:20;97:33;72:20;97:33;:::i;:::-;5012:63;;;;5112:3;5156:9;5152:22;2659:20;5121:63;;4373:827;;;;;;;;;;:::o;5207:1491::-;;;;;;;;;;;;5477:3;5465:9;5456:7;5452:23;5448:33;5445:2;;;-1:-1;;5484:12;5445:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5536:63;-1:-1;5636:2;5675:22;;72:20;97:33;72:20;97:33;:::i;:::-;5644:63;-1:-1;5744:2;5783:22;;2659:20;;-1:-1;5852:2;5891:22;;2659:20;;-1:-1;5960:3;6000:22;;2659:20;;-1:-1;6069:3;6109:22;;72:20;97:33;72:20;97:33;:::i;:::-;6078:63;-1:-1;6178:3;6218:22;;2659:20;;-1:-1;6287:3;6324:22;;725:20;750:30;725:20;750:30;:::i;:::-;6296:60;-1:-1;6412:51;6455:7;6393:3;6431:22;;6412:51;:::i;:::-;6402:61;;6500:3;6544:9;6540:22;994:20;6509:63;;6609:3;6654:9;6650:22;994:20;6618:64;;5439:1259;;;;;;;;;;;;;;:::o;6705:1121::-;;;;;;;;;6928:3;6916:9;6907:7;6903:23;6899:33;6896:2;;;-1:-1;;6935:12;6896:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6987:63;-1:-1;7087:2;7126:22;;72:20;97:33;72:20;97:33;:::i;:::-;7095:63;-1:-1;7195:2;7234:22;;2659:20;;-1:-1;7303:2;7342:22;;2659:20;;-1:-1;7411:3;7451:22;;2659:20;;-1:-1;7520:3;7560:22;;2659:20;;-1:-1;7629:3;7669:22;;72:20;97:33;72:20;97:33;:::i;:::-;7638:63;;;;7738:3;7782:9;7778:22;2659:20;7747:63;;6890:936;;;;;;;;;;;:::o;7833:454::-;;;7980:9;7971:7;7967:23;7992:3;7967:23;7963:33;7960:2;;;-1:-1;;7999:12;7960:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;8051:74;-1:-1;1397:4;1376:19;;;1372:30;1369:2;;;-1:-1;;1405:12;1369:2;;45014;45008:9;1397:4;45044:6;45040:17;45151:6;45139:10;45136:22;45115:18;45103:10;45100:34;45097:62;45094:2;;;-1:-1;;45162:12;45094:2;45014;45181:22;1537:60;1593:3;8162:2;8239:22;;1537:60;:::i;:::-;1519:16;1512:86;1694:60;1750:3;45014:2;8243:9;1726:22;1694:60;:::i;:::-;8162:2;1680:5;1676:16;1669:86;1889:22;8243:9;1889:22;2807:13;45014:2;1843:5;1839:16;1832:86;2019:59;2074:3;2050:22;8243:9;2050:22;2019:59;:::i;:::-;1889:22;2005:5;2001:16;1994:85;2181:59;2236:3;2212:22;8243:9;2212:22;2181:59;:::i;:::-;2050:22;2167:5;2163:16;2156:85;2341:81;2418:3;1397:4;8243:9;2394:22;2341:81;:::i;:::-;2212:22;2327:5;2323:16;2316:107;8170:101;;;;7954:333;;;;;:::o;8294:743::-;;;;;;8466:3;8454:9;8445:7;8441:23;8437:33;8434:2;;;-1:-1;;8473:12;8434:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;8525:63;-1:-1;8625:2;8664:22;;2659:20;;-1:-1;8733:2;8772:22;;2659:20;;-1:-1;8841:2;8880:22;;72:20;97:33;72:20;97:33;:::i;:::-;8428:609;;;;-1:-1;8428:609;;8949:3;8989:22;2659:20;;8428:609;-1:-1;;8428:609::o;9044:1237::-;;;;;;;;;;9279:3;9267:9;9258:7;9254:23;9250:33;9247:2;;;-1:-1;;9286:12;9247:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;9338:63;-1:-1;9438:2;9477:22;;2659:20;;-1:-1;9546:2;9585:22;;2659:20;;-1:-1;9654:2;9693:22;;72:20;97:33;72:20;97:33;:::i;:::-;9662:63;-1:-1;9762:3;9802:22;;2659:20;;-1:-1;9871:3;9908:22;;725:20;750:30;725:20;750:30;:::i;:::-;9880:60;-1:-1;9996:51;10039:7;9977:3;10015:22;;9996:51;:::i;:::-;9986:61;;10084:3;10128:9;10124:22;994:20;10093:63;;10193:3;10237:9;10233:22;994:20;10202:63;;9241:1040;;;;;;;;;;;:::o;10288:1363::-;;;;;;;;;;;10540:3;10528:9;10519:7;10515:23;10511:33;10508:2;;;-1:-1;;10547:12;10508:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;10599:63;-1:-1;10699:2;10738:22;;2659:20;;-1:-1;10807:2;10846:22;;2659:20;;-1:-1;10915:2;10954:22;;2659:20;;-1:-1;11023:3;11063:22;;72:20;97:33;72:20;97:33;:::i;:::-;11032:63;-1:-1;11132:3;11172:22;;2659:20;;-1:-1;11241:3;11278:22;;725:20;750:30;725:20;750:30;:::i;:::-;11250:60;-1:-1;11366:51;11409:7;11347:3;11385:22;;11366:51;:::i;:::-;11356:61;;11454:3;11498:9;11494:22;994:20;11463:63;;11563:3;11607:9;11603:22;994:20;11572:63;;10502:1149;;;;;;;;;;;;;:::o;11658:995::-;;;;;;;;11864:3;11852:9;11843:7;11839:23;11835:33;11832:2;;;-1:-1;;11871:12;11832:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;11923:63;-1:-1;12023:2;12062:22;;2659:20;;-1:-1;12131:2;12170:22;;2659:20;;-1:-1;12239:2;12278:22;;2659:20;;-1:-1;12347:3;12387:22;;2659:20;;-1:-1;12456:3;12496:22;;72:20;97:33;72:20;97:33;:::i;12660:257::-;;12772:2;12760:9;12751:7;12747:23;12743:32;12740:2;;;-1:-1;;12778:12;12740:2;873:6;867:13;885:30;909:5;885:30;:::i;12924:399::-;;;13056:2;13044:9;13035:7;13031:23;13027:32;13024:2;;;-1:-1;;13062:12;13024:2;2535:6;2529:13;2547:33;2574:5;2547:33;:::i;:::-;13225:2;13275:22;;2529:13;13114:74;;-1:-1;2547:33;2529:13;2547:33;:::i;13330:670::-;;;;;13495:3;13483:9;13474:7;13470:23;13466:33;13463:2;;;-1:-1;;13502:12;13463:2;13564:64;13620:7;13596:22;13564:64;:::i;:::-;13554:74;;13683:64;13739:7;13665:2;13719:9;13715:22;13683:64;:::i;:::-;13673:74;;13784:2;13837:9;13833:22;2947:13;47261:10;49438:5;47250:22;49414:5;49411:34;49401:2;;-1:-1;;49449:12;49401:2;13902;13952:22;;;;2807:13;13457:543;;;;-1:-1;;;13457:543::o;14007:263::-;;14122:2;14110:9;14101:7;14097:23;14093:32;14090:2;;;-1:-1;;14128:12;14090:2;-1:-1;2807:13;;14084:186;-1:-1;14084:186::o;14277:491::-;;;;14415:2;14403:9;14394:7;14390:23;14386:32;14383:2;;;-1:-1;;14421:12;14383:2;2672:6;2659:20;14473:63;;14573:2;14616:9;14612:22;72:20;97:33;124:5;97:33;:::i;:::-;14377:391;;14581:63;;-1:-1;;;14681:2;14720:22;;;;2659:20;;14377:391::o;14775:522::-;;;;14931:2;14919:9;14910:7;14906:23;14902:32;14899:2;;;-1:-1;;14937:12;14899:2;2672:6;2659:20;14989:63;;15117:2;15106:9;15102:18;15089:32;15141:18;15133:6;15130:30;15127:2;;;-1:-1;;15163:12;15127:2;15201:80;15273:7;15264:6;15253:9;15249:22;15201:80;:::i;:::-;14893:404;;15183:98;;-1:-1;15183:98;;-1:-1;;;;14893:404::o;15304:773::-;;;;;;15494:3;15482:9;15473:7;15469:23;15465:33;15462:2;;;-1:-1;;15501:12;15462:2;2672:6;2659:20;15553:63;;15681:2;15670:9;15666:18;15653:32;15705:18;15697:6;15694:30;15691:2;;;-1:-1;;15727:12;15691:2;15765:80;15837:7;15828:6;15817:9;15813:22;15765:80;:::i;:::-;15747:98;;-1:-1;15747:98;-1:-1;;15882:2;15921:22;;72:20;97:33;72:20;97:33;:::i;:::-;15456:621;;;;-1:-1;15456:621;;15990:2;16029:22;2659:20;;15456:621;-1:-1;;15456:621::o;16084:399::-;;;16216:2;16204:9;16195:7;16191:23;16187:32;16184:2;;;-1:-1;;16222:12;16184:2;-1:-1;;2807:13;;16385:2;16435:22;;;2807:13;;;;;-1:-1;16178:305::o;16490:899::-;;;;;;;16697:3;16685:9;16676:7;16672:23;16668:33;16665:2;;;-1:-1;;16704:12;16665:2;2672:6;2659:20;16756:63;;16856:2;16899:9;16895:22;2659:20;16864:63;;16992:2;16981:9;16977:18;16964:32;17016:18;17008:6;17005:30;17002:2;;;-1:-1;;17038:12;17002:2;17076:80;17148:7;17139:6;17128:9;17124:22;17076:80;:::i;:::-;17058:98;;-1:-1;17058:98;-1:-1;;17193:2;17232:22;;72:20;97:33;72:20;97:33;:::i;:::-;17201:63;;;;17301:3;17345:9;17341:22;2659:20;17310:63;;16659:730;;;;;;;;:::o;17396:491::-;;;;17534:2;17522:9;17513:7;17509:23;17505:32;17502:2;;;-1:-1;;17540:12;17502:2;-1:-1;;2659:20;;;17692:2;17731:22;;2659:20;;-1:-1;17800:2;17839:22;;;2659:20;;17496:391;-1:-1;17496:391::o;28857:392::-;48585:14;48589:2;48585:14;;;;;18434:58;;48585:14;;;;;29110:2;29101:12;;18434:58;29212:12;;;29001:248::o;29256:271::-;;20022:5;45476:12;20133:52;20178:6;20173:3;20166:4;20159:5;20155:16;20133:52;:::i;:::-;20197:16;;;;;29390:137;-1:-1;;29390:137::o;29534:926::-;24377:66;24357:87;;48589:2;48585:14;;;;;;24342:1;24463:11;;18434:58;30146:12;;;19304:37;25503:66;30257:12;;;25483:87;25589:12;;;29880:580::o;30467:222::-;47055:42;47044:54;;;;18296:37;;30594:2;30579:18;;30565:124::o;30941:916::-;47055:42;47044:54;;;18155:58;;47044:54;;;;31429:2;31414:18;;18155:58;31512:2;31497:18;;19304:37;;;;31595:2;31580:18;;19304:37;;;;47458:4;47447:16;31674:3;31659:19;;28810:35;31758:3;31743:19;;19304:37;31842:3;31827:19;;19304:37;;;;31248:3;31233:19;;31219:638::o;31864:460::-;47055:42;47044:54;;;18155:58;;47044:54;;;;32227:2;32212:18;;18296:37;32310:2;32295:18;;19304:37;;;;32055:2;32040:18;;32026:298::o;32331:333::-;47055:42;47044:54;;;18296:37;;47044:54;;32650:2;32635:18;;18296:37;32486:2;32471:18;;32457:207::o;32671:556::-;47055:42;47044:54;;;18296:37;;47044:54;;;33047:2;33032:18;;18296:37;47044:54;;33130:2;33115:18;;18296:37;33213:2;33198:18;;19304:37;;;;32882:3;32867:19;;32853:374::o;33685:333::-;47055:42;47044:54;;;;18296:37;;34004:2;33989:18;;19304:37;33840:2;33825:18;;33811:207::o;34025:370::-;34202:2;34216:47;;;45476:12;;34187:18;;;45879:19;;;34025:370;;34202:2;45330:14;;;;45919;;;;34025:370;18943:260;18968:6;18965:1;18962:13;18943:260;;;19029:13;;19304:37;;45734:14;;;;18048;;;;18990:1;18983:9;18943:260;;;-1:-1;34269:116;;34173:222;-1:-1;;;;;;34173:222::o;34402:416::-;34602:2;34616:47;;;20450:2;34587:18;;;45879:19;20486:23;45919:14;;;20466:44;20529:12;;;34573:245::o;34825:416::-;35025:2;35039:47;;;20780:2;35010:18;;;45879:19;20816:33;45919:14;;;20796:54;20869:12;;;34996:245::o;35248:416::-;35448:2;35462:47;;;21120:2;35433:18;;;45879:19;21156:28;45919:14;;;21136:49;21204:12;;;35419:245::o;35671:416::-;35871:2;35885:47;;;21455:2;35856:18;;;45879:19;21491:23;45919:14;;;21471:44;21534:12;;;35842:245::o;36094:416::-;36294:2;36308:47;;;21785:2;36279:18;;;45879:19;21821:21;45919:14;;;21801:42;21862:12;;;36265:245::o;36517:416::-;36717:2;36731:47;;;22113:2;36702:18;;;45879:19;22149:22;45919:14;;;22129:43;22191:12;;;36688:245::o;36940:416::-;37140:2;37154:47;;;22442:2;37125:18;;;45879:19;22478:34;45919:14;;;22458:55;22547:7;22533:12;;;22526:29;22574:12;;;37111:245::o;37363:416::-;37563:2;37577:47;;;22825:2;37548:18;;;45879:19;22861:22;45919:14;;;22841:43;22903:12;;;37534:245::o;37786:416::-;37986:2;38000:47;;;23154:2;37971:18;;;45879:19;23190:34;45919:14;;;23170:55;23259:10;23245:12;;;23238:32;23289:12;;;37957:245::o;38209:416::-;38409:2;38423:47;;;23540:2;38394:18;;;45879:19;23576:34;45919:14;;;23556:55;23645:10;23631:12;;;23624:32;23675:12;;;38380:245::o;38632:416::-;38832:2;38846:47;;;23926:2;38817:18;;;45879:19;23962:34;45919:14;;;23942:55;24031:4;24017:12;;;24010:26;24055:12;;;38803:245::o;39055:416::-;39255:2;39269:47;;;24713:2;39240:18;;;45879:19;24749:29;45919:14;;;24729:50;24798:12;;;39226:245::o;39478:416::-;39678:2;39692:47;;;25049:2;39663:18;;;45879:19;25085:34;45919:14;;;25065:55;25154:6;25140:12;;;25133:28;25180:12;;;39649:245::o;39901:416::-;40101:2;40115:47;;;25840:2;40086:18;;;45879:19;25876:25;45919:14;;;25856:46;25921:12;;;40072:245::o;40324:416::-;40524:2;40538:47;;;26172:2;40509:18;;;45879:19;26208:34;45919:14;;;26188:55;26277:5;26263:12;;;26256:27;26302:12;;;40495:245::o;40747:416::-;40947:2;40961:47;;;26553:2;40932:18;;;45879:19;26589;45919:14;;;26569:40;26628:12;;;40918:245::o;41170:416::-;41370:2;41384:47;;;26879:2;41355:18;;;45879:19;26915:34;45919:14;;;26895:55;26984:5;26970:12;;;26963:27;27009:12;;;41341:245::o;41593:416::-;41793:2;41807:47;;;27260:2;41778:18;;;45879:19;27296:34;45919:14;;;27276:55;27365:11;27351:12;;;27344:33;27396:12;;;41764:245::o;42016:416::-;42216:2;42230:47;;;27647:2;42201:18;;;45879:19;27683:34;45919:14;;;27663:55;27752:5;27738:12;;;27731:27;27777:12;;;42187:245::o;42439:416::-;42639:2;42653:47;;;28028:2;42624:18;;;45879:19;28064:34;45919:14;;;28044:55;28133:6;28119:12;;;28112:28;28159:12;;;42610:245::o;42862:416::-;43062:2;43076:47;;;28410:2;43047:18;;;45879:19;28446:21;45919:14;;;28426:42;28487:12;;;43033:245::o;43285:222::-;19304:37;;;43412:2;43397:18;;43383:124::o;43514:528::-;;19334:5;19311:3;19304:37;47055:42;47048:5;47044:54;43879:2;43868:9;43864:18;18296:37;43715:2;43916;43905:9;43901:18;43894:48;19654:5;45476:12;45891:6;43715:2;43704:9;43700:18;45879:19;19747:52;19792:6;45919:14;43704:9;45919:14;43879:2;19773:5;19769:16;19747:52;:::i;:::-;48498:2;48478:14;48494:7;48474:28;19811:39;;;;45919:14;19811:39;;43686:356;-1:-1;;;;43686:356::o;44049:333::-;19304:37;;;44368:2;44353:18;;19304:37;44204:2;44189:18;;44175:207::o;44389:556::-;19304:37;;;44765:2;44750:18;;19304:37;;;;44848:2;44833:18;;19304:37;44931:2;44916:18;;19304:37;44600:3;44585:19;;44571:374::o;47855:268::-;47920:1;47927:101;47941:6;47938:1;47935:13;47927:101;;;48008:11;;;48002:18;47989:11;;;47982:39;47963:2;47956:10;47927:101;;;48043:6;48040:1;48037:13;48034:2;;;-1:-1;;47920:1;48090:16;;48083:27;47904:219::o;48617:117::-;47055:42;48704:5;47044:54;48679:5;48676:35;48666:2;;48725:1;;48715:12;48666:2;48660:74;:::o;48741:111::-;48822:5;46761:13;46754:21;48800:5;48797:32;48787:2;;48843:1;;48833:12;49105:117;46939:30;49192:5;46928:42;49167:5;49164:35;49154:2;;49213:1;;49203:12"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_factory\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_feswaNFT\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"_WETH\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pairOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rateTrigger\",\"type\":\"uint256\"}],\"name\":\"ManageFeswaPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pairAAB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pairABB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityABB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTEE\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"estimateAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"estimateAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feswaNFT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityABB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTEE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTEE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHFeeOnTransfer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTEE\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitFeeOnTransfer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensFeeOnTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHFeeOnTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensFeeOnTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FeSwapRouter.sol\":\"FeSwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeSwapRouter.sol\":{\"keccak256\":\"0x06ee72b19d93d523ec98ff19586cbe6993ba17e649130b16e805e794d43c66e5\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6922bc20c8c551d9339fe7ec7aef8570ba884129f032b5abc486a4eeb82daf86\",\"dweb:/ipfs/Qmc48NrtenK4LHYb9ndFBmgqSLvyWTbtoThpktVGb6Fjn6\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xffa99694f4e4032bb172355a8a945673f2b478dd8beaae2924be031d508840e6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a4797ac84843f2e7390441a1e906f99ae88470b85dbc33986d2b157cbafb879a\",\"dweb:/ipfs/QmSQcCyUgUfwSkqyu9aAAw8LcRjcMFYv7omtYfUWkYKXKQ\"]},\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]},\"contracts/interfaces/IFeSwapFactory.sol\":{\"keccak256\":\"0x6380263efaf08b4bbb55a8441149baa7e350cfb7ef2ab4d7d1b9459048e47d64\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ed8209bcab83952ee61eead083e52e6396b6c8e9b4aa1c4e382f93bef60039d\",\"dweb:/ipfs/QmQuszK4Sw3NKZqvkhN6WYcjmgzzgegvY8a4joxEsJykye\"]},\"contracts/interfaces/IFeSwapPair.sol\":{\"keccak256\":\"0x480046bc17bd6578c1943d7b487ed45183c581625b8abed2b97a48db1220c1d0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3dc34bc6ffcb16588ecd57a6fbe28595f6e2eda02ca13c6864708477bce9afcc\",\"dweb:/ipfs/QmVrkT7MXCc3SqrHaVb1arfndaJGfPeve4Q57Lc34xCChj\"]},\"contracts/interfaces/IFeSwapRouter.sol\":{\"keccak256\":\"0x84067893834807d34b847b315d9438fc4d4acee57496ea58f4be2aa39d904584\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af382f205e3a27ee135677c2be6d7f81f8b4f96beae9fc0e0278a591ec8a8760\",\"dweb:/ipfs/QmYXmiZMNGdiXBeaHhHFiRXpBArBF8XYs5jc3ayH7CJDn2\"]},\"contracts/interfaces/IWETH.sol\":{\"keccak256\":\"0x0880556c10a7ff3b827ea06f998d7bad2961953788582fb8a967f35fce3b6fba\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://42b9d6ad1eca93f92ff7fd9005b4fb58a0b6dfc44fb8c21b6b8e784bf4acaa94\",\"dweb:/ipfs/QmThKrCLx7W7EbKoWjHv7zn5WoWejJQNCFqdo24iP1FdnM\"]},\"contracts/libraries/FeSwapLibrary.sol\":{\"keccak256\":\"0x019dc9f2596d2b1f8271cff0ab70b4e0d8122bc96e4c0f7e70d1c9a3fdb88471\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d3cc44c6c398321e3b7fa7e980eab843db164d7d9c2b9fb53b4ad41a8ed50756\",\"dweb:/ipfs/QmS1jSY14znYL1AnVCGFSUwxMT3p7hEW63SmNxmTuXw2zu\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xf04a5109c9205c67202d408fdf6ce80ec28fcd93702bdba158d88aae5a6573ad\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ee35c811f41747d96f6946388815e9bf4d6c72dd3ddec7f1de3815979f3f415\",\"dweb:/ipfs/QmZFQ9oBd3DyZbzNf7eTesDxjNxyzpyPcxSC8w9RVRpNPM\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x6b95448416a02dc589833760746844ce29af37d8aae67b9b60a1697f7c62fc23\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7b9b305c0988c9c80b499835b40ba958a49aa1bd7342d2af45124463edac8715\",\"dweb:/ipfs/QmfQ4cAiv9U6joV6S6J6uMtLeijLTCCoz8BGG2U4knULQ3\"]}},\"version\":1}",
      "bytecode": "60e06040523480156200001157600080fd5b50604051620059203803806200592083398101604081905262000034916200005c565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c8565b60008060006060848603121562000071578283fd5b83516200007e81620000af565b60208501519093506200009181620000af565b6040850151909250620000a481620000af565b809150509250925092565b6001600160a01b0381168114620000c557600080fd5b50565b60805160601c60a05160601c60c05160601c615728620001f8600039806101c252806105a952806107625280610dd85280610f3652806112ca52806113f7528061148c52806116ac52806117c65280611c585280611d965280611e945280611f075280611f7a5280611ff1528061234c52806123f75280612478528061271252806128b052806129da5280612a6f5280612c395280612c9a5280612d535280612e9d5280612edd5280612f9652508061108852806128215250806106605280610839528061095152806109bc5280610af15280610e8f5280610f1452806111ef528061137552806115ec528061188e5280611a1752806122ed52806124b752806126f0528061284a528061295b52806134c3528061350652806138dd5280613a155280613f7452506157286000f3fe6080604052600436106101a55760003560e01c806396adb337116100e1578063c45a01551161008a578063ead86a2911610064578063ead86a29146104dc578063eef40f31146104f1578063fb3bdb4114610511578063ffbcf7f314610524576101eb565b8063c45a015514610494578063d57b57a5146104a9578063ded9382a146104bc576101eb565b8063ad615dec116100bb578063ad615dec14610424578063ba3690cb14610444578063ba9f20b814610464576101eb565b806396adb337146103c2578063a59600db146103e2578063ad5c464814610402576101eb565b80634a25d94a1161014e5780637ff36ab5116101285780637ff36ab51461034f57806385f8c259146103625780638803dbee146103825780638de9d7d2146103a2576101eb565b80634a25d94a146102e1578063573692c1146103015780636a055fa914610321576101eb565b80632e1db1431161017f5780632e1db1431461028157806338ed1739146102a15780633d221b20146102c1576101eb565b8063054d50d4146101f057806318cbafe5146102265780632195995c14610253576101eb565b366101eb573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101e957fe5b005b600080fd5b3480156101fc57600080fd5b5061021061020b366004614d67565b610537565b60405161021d91906155d0565b60405180910390f35b34801561023257600080fd5b50610246610241366004614cf6565b61054c565b60405161021d9190614f8d565b34801561025f57600080fd5b5061027361026e36600461476f565b61082f565b60405161021d92919061564e565b34801561028d57600080fd5b5061024661029c366004614c24565b61094a565b3480156102ad57600080fd5b506102466102bc366004614cf6565b610978565b3480156102cd57600080fd5b506101e96102dc366004614cf6565b610a8b565b3480156102ed57600080fd5b506102466102fc366004614cf6565b610d84565b34801561030d57600080fd5b5061021061031c3660046149c3565b610f0c565b34801561032d57600080fd5b5061034161033c366004614bed565b61103e565b60405161021d929190614f09565b61024661035d366004614c6e565b61128b565b34801561036e57600080fd5b5061021061037d366004614d67565b61159b565b34801561038e57600080fd5b5061024661039d366004614cf6565b6115a8565b3480156103ae57600080fd5b506102106103bd366004614ae4565b611669565b3480156103ce57600080fd5b506102736103dd366004614819565b611843565b3480156103ee57600080fd5b506101e96103fd366004614cf6565b611c06565b34801561040e57600080fd5b50610417611f05565b60405161021d9190614e69565b34801561043057600080fd5b5061021061043f366004614d67565b611f29565b34801561045057600080fd5b5061027361045f366004614ae4565b611f36565b34801561047057600080fd5b5061048461047f3660046146fe565b61206f565b60405161021d949392919061565c565b3480156104a057600080fd5b506104176122eb565b6101e96104b7366004614c6e565b61230f565b3480156104c857600080fd5b506102736104d7366004614a4e565b6126e6565b3480156104e857600080fd5b5061041761281f565b3480156104fd57600080fd5b5061024661050c366004614c24565b612843565b61024661051f366004614c6e565b612871565b610484610532366004614972565b612baf565b60006105448484846130f8565b949350505050565b60608142811015610592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018181106105f757fe5b905060200201602081019061060c9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006106877f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106106a057fe5b602002602001015110156106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610721878760008181106106f057fe5b90506020020160208101906107059190614686565b33838660008151811061071457fe5b6020026020010151613322565b6107608388888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061344f915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d846001865103815181106107ac57fe5b60200260200101516040518263ffffffff1660e01b81526004016107d091906155d0565b600060405180830381600087803b1580156107ea57600080fd5b505af11580156107fe573d6000803e3d6000fd5b50505050610823858460018651038151811061081657fe5b60200260200101516135d9565b50509695505050505050565b600080600061085f7f00000000000000000000000000000000000000000000000000000000000000008f8f613692565b905060008761086e578c610890565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906108f1903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b5050505050506109368d8d8d60008e8e8e8e611843565b909e909d509b505050505050505050505050565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561370d565b606081428110156109b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006109e37f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106109fc57fe5b60200260200101511015610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610a4c878760008181106106f057fe5b610823838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b8042811015610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b610b5f85856000818110610ad657fe5b9050602002016020810190610aeb9190614686565b33610b597f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b9050602002016020810190610b329190614686565b8a8a6001818110610b3f57fe5b9050602002016020810190610b549190614686565b613692565b8a613322565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610b8f57fe5b9050602002016020810190610ba49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610bdc9190614e69565b60206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190614bd5565b9050610c6c868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250613895915050565b86610d428288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610c9f57fe5b9050602002016020810190610cb49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b60206040518083038186803b158015610d0457600080fd5b505afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190614bd5565b90613aee565b1015610d7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b5050505050505050565b60608142811015610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610e2657fe5b9050602002016020810190610e3b9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b6000610eb67f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b80945081925050508783600081518110610ecc57fe5b602002602001015111156106e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600080610f5a7f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600086610f69578a610f8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf90610fec903390309086908e908d908d908d90600401614e8a565b600060405180830381600087803b15801561100657600080fd5b505af115801561101a573d6000803e3d6000fd5b5050505061102e8c8c8c6000808e8e611669565b9c9b505050505050505050505050565b600080600061104b6145a9565b6040517f2f380b3500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f380b35906110bd908a906004016155d0565b60e06040518083038186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d9190614894565b90925090503373ffffffffffffffffffffffffffffffffffffffff831614611161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061535a565b60038160a00151600581111561117357fe5b10156111ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150ad565b805160208201516040517f883d273000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063883d27309061122a90859085908d908d90600401614f30565b6040805180830381600087803b15801561124357600080fd5b505af1158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b91906146c5565b909a909950975050505050505050565b606081428110156112c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061130c57fe5b90506020020160208101906113219190614686565b73ffffffffffffffffffffffffffffffffffffffff161461136e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b600061139c7f00000000000000000000000000000000000000000000000000000000000000003489896131a9565b809450819250505087836001855103815181106113b557fe5b602002602001015110156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08460008151811061143e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82856000815181106114d457fe5b60200260200101516040518363ffffffff1660e01b81526004016114f9929190614f67565b602060405180830381600087803b15801561151357600080fd5b505af1158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190614b35565b61155157fe5b611590838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b505095945050505050565b6000610544848484613ca7565b606081428110156115e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006116137f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b8094508192505050878360008151811061162957fe5b60200260200101511115610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600081428110156116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6116d6897f00000000000000000000000000000000000000000000000000000000000000008a8a8a8a308a611843565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935061178991508a90869073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190611734903090600401614e69565b60206040518083038186803b15801561174c57600080fd5b505afa158015611760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117849190614bd5565b613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906117fb9085906004016155d0565b600060405180830381600087803b15801561181557600080fd5b505af1158015611829573d6000803e3d6000fd5b5050505061183784836135d9565b50979650505050505050565b6000808242811015611881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b8815611a0a5760006118b47f00000000000000000000000000000000000000000000000000000000000000008d8d613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd9061190d90339085908f90600401614ed8565b602060405180830381600087803b15801561192757600080fd5b505af115801561193b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195f9190614b35565b506040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389afcb44906119b2908990600401614e69565b6040805180830381600087803b1580156119cb57600080fd5b505af11580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a039190614cd3565b9094509250505b8715611b84576000611a3d7f00000000000000000000000000000000000000000000000000000000000000008c8e613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd90611a9690339085908e90600401614ed8565b602060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae89190614b35565b506000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44896040518263ffffffff1660e01b8152600401611b259190614e69565b6040805180830381600087803b158015611b3e57600080fd5b505af1158015611b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b769190614cd3565b969096019594909401935050505b86831015611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906154df565b85821015611bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615391565b509850989650505050505050565b8042811015611c41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611ca657fe5b9050602002016020810190611cbb9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614611d08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b611d1885856000818110610ad657fe5b611d56858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613895915050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611dcb903090600401614e69565b60206040518083038186803b158015611de357600080fd5b505afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190614bd5565b905086811015611e57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90611ec99084906004016155d0565b600060405180830381600087803b158015611ee357600080fd5b505af1158015611ef7573d6000803e3d6000fd5b50505050610d7a84826135d9565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610544848484613e80565b6000808242811015611f74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b611fa48a7f00000000000000000000000000000000000000000000000000000000000000008b8b8b8b308b611843565b9093509150611fb48a8685613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906120269085906004016155d0565b600060405180830381600087803b15801561204057600080fd5b505af1158015612054573d6000803e3d6000fd5b5050505061206285836135d9565b5097509795505050505050565b60008060008084428110156120b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60648811156120eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b87156121f257600060646120ff8c8b613f1c565b8161210657fe5b04935060646121158b8b613f1c565b8161211c57fe5b04925061212b8d8d8686613f6d565b9197509550905061213e8d338389613322565b61214a8c338388613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061219c908b90600401614e69565b602060405180830381600087803b1580156121b657600080fd5b505af11580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ee9190614bd5565b9350505b606488146122dc57600061220c8c8e878d03898f03613f6d565b909c50909a5090506122208d33838e613322565b61222c8c33838d613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061227e908b90600401614e69565b602060405180830381600087803b15801561229857600080fd5b505af11580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d09190614bd5565b958b0195948a01949250505b50975097509750979350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b804281101561234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061238e57fe5b90506020020160208101906123a39190614686565b73ffffffffffffffffffffffffffffffffffffffff16146123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6124e37f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b836040518363ffffffff1660e01b8152600401612501929190614f67565b602060405180830381600087803b15801561251b57600080fd5b505af115801561252f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125539190614b35565b61255957fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061258957fe5b905060200201602081019061259e9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016125d69190614e69565b60206040518083038186803b1580156125ee57600080fd5b505afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126269190614bd5565b9050612666878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613895915050565b87610d428289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061269957fe5b90506020020160208101906126ae9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401610cec9190614e69565b60008060006127367f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600087612745578c612767565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906127c8903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b1580156127e257600080fd5b505af11580156127f6573d6000803e3d6000fd5b5050505061280a8e8e60008f8f8f8f611f36565b909f909e509c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561417f565b606081428110156128ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106128f257fe5b90506020020160208101906129079190614686565b73ffffffffffffffffffffffffffffffffffffffff1614612954576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006129827f0000000000000000000000000000000000000000000000000000000000000000898989613b31565b8094508192505050348360008151811061299857fe5b602002602001015111156129d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db084600081518110612a2157fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a5457600080fd5b505af1158015612a68573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8285600081518110612ab757fe5b60200260200101516040518363ffffffff1660e01b8152600401612adc929190614f67565b602060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2e9190614b35565b612b3457fe5b612b73838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b82600081518110612b8057fe5b6020026020010151341115611590576115903384600081518110612ba057fe5b602002602001015134036135d9565b6000806000808442811015612bf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6064881115612c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b8715612e8d576000612c858b7f00000000000000000000000000000000000000000000000000000000000000006064612c648e8e613f1c565b81612c6b57fe5b046064612c78348f613f1c565b81612c7f57fe5b04613f6d565b91975095509050612c988b338389613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d0057600080fd5b505af1158015612d14573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612d8d915084908990600401614f67565b602060405180830381600087803b158015612da757600080fd5b505af1158015612dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddf9190614b35565b612de557fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290612e37908b90600401614e69565b602060405180830381600087803b158015612e5157600080fd5b505af1158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190614bd5565b9350505b606488146130d757600080612ec87f00000000000000000000000000000000000000000000000000000000000000008d8834038a8f03613f6d565b909c5092509050612edb8c33848e613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f4357600080fd5b505af1158015612f57573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612fd0915085908590600401614f67565b602060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130229190614b35565b61302857fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690636a6278429061307a908c90600401614e69565b602060405180830381600087803b15801561309457600080fd5b505af11580156130a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cc9190614bd5565b968b01969501949250505b833411156130eb576130eb338534036135d9565b5095509550955095915050565b6000808411613133576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906151af565b6000831180156131435750600082115b613179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b60006131858584613f1c565b9050600061319385876142c6565b905080828161319e57fe5b049695505050505050565b6000606060028310156131e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff811180156131ff57600080fd5b50604051908082528060200260200182016040528015613229578160200160208202803683370190505b509050848160008151811061323a57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84018110156133185760008060006132c68a89898781811061328857fe5b905060200201602081019061329d9190614686565b8a8a886001018181106132ac57fe5b90506020020160208101906132c19190614686565b614303565b9250925092506132ea8585815181106132db57fe5b602002602001015184846130f8565b8585600101815181106132f957fe5b60209081029190910101528361330d578095505b505050600101613249565b5094509492505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161335793929190614ed8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516133a59190614dcc565b6000604051808303816000865af19150503d80600081146133e2576040519150601f19603f3d011682016040523d82523d6000602084013e6133e7565b606091505b50915091508180156134115750805115806134115750808060200190518101906134119190614b35565b613447576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061553c565b505050505050565b60005b60018351038110156135d35760008084838151811061346d57fe5b602002602001015185846001018151811061348457fe5b60200260200101519150915060008684600101815181106134a157fe5b602002602001015190506000600287510385106134be57856134ff565b6134ff7f0000000000000000000000000000000000000000000000000000000000000000848988600201815181106134f257fe5b6020026020010151613692565b905061352c7f00000000000000000000000000000000000000000000000000000000000000008585613692565b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9190911690631c6da724906135919085908590602481016155d9565b600060405180830381600087803b1580156135ab57600080fd5b505af11580156135bf573d6000803e3d6000fd5b505060019096019550613452945050505050565b50505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516136109190614dcc565b60006040518083038185875af1925050503d806000811461364d576040519150601f19603f3d011682016040523d82523d6000602084013e613652565b606091505b505090508061368d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615425565b505050565b60008383836040516020016136a8929190614d92565b604051602081830303815290604052805190602001206040516020016136cf929190614de8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6060600282101561374a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff8111801561376157600080fd5b5060405190808252806020026020018201604052801561378b578160200160208202803683370190505b509050838160018351038151811061379f57fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b801561388c57600080613825888787600187038181106137ea57fe5b90506020020160208101906137ff9190614686565b88888781811061380b57fe5b90506020020160208101906138209190614686565b6144f2565b50509150915061384984848151811061383a57fe5b60200260200101518383613ca7565b84600185038151811061385857fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016137ce565b50949350505050565b60005b600183510381101561368d576000808483815181106138b357fe5b60200260200101518584600101815181106138ca57fe5b60200260200101519150915060006139037f00000000000000000000000000000000000000000000000000000000000000008484613692565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561395157600080fd5b505afa158015613965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139899190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506139ec828873ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b93506139f98483836130f8565b92505050600060028951038710613a105787613a44565b613a447f0000000000000000000000000000000000000000000000000000000000000000868b8a600201815181106134f257fe5b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915290915073ffffffffffffffffffffffffffffffffffffffff851690631c6da72490613aaa9085908590602481016155d9565b600060405180830381600087803b158015613ac457600080fd5b505af1158015613ad8573d6000803e3d6000fd5b5050600190980197506138989650505050505050565b80820382811115613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990614fd1565b92915050565b600060606002831015613b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff81118015613b8757600080fd5b50604051908082528060200260200182016040528015613bb1578160200160208202803683370190505b5090508481600183510381518110613bc557fe5b60209081029190910101526000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85015b8015613c9b57613c3189888860018503818110613c1057fe5b9050602002016020810190613c259190614686565b8989858181106132ac57fe5b86519097509194509250613c5a90859083908110613c4b57fe5b60200260200101518484613ca7565b846001830381518110613c6957fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613bf7565b50505094509492505050565b6000808411613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615482565b600083118015613cf25750600082115b613d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b6000613d348486613f1c565b90506000613d428487613aee565b905080613d4f83826142c6565b8161319e57fe5b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613d89929190614f67565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613dd79190614dcc565b6000604051808303816000865af19150503d8060008114613e14576040519150601f19603f3d011682016040523d82523d6000602084013e613e19565b606091505b5091509150818015613e43575080511580613e43575080806020019051810190613e439190614b35565b613e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615008565b5050505050565b6000808411613ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615269565b600083118015613ecb5750600082115b613f01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b82613f0c8584613f1c565b81613f1357fe5b04949350505050565b6000811580613f3757505080820282828281613f3457fe5b04145b613b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150e4565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390588886040518363ffffffff1660e01b8152600401613fcd929190614f09565b60206040518083038186803b158015613fe557600080fd5b505afa158015613ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401d91906146a9565b905073ffffffffffffffffffffffffffffffffffffffff811661406c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615599565b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b1580156140b557600080fd5b505afa1580156140c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ed9190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150816000148015614121575080155b1561413157869450859350614173565b600061413e888484613e80565b905086811161415257879550935083614171565b600061415f888486613e80565b90508881111561416b57fe5b95508694505b505b50509450945094915050565b606060028210156141bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff811180156141d357600080fd5b506040519080825280602002602001820160405280156141fd578160200160208202803683370190505b509050838160008151811061420e57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830181101561388c5760008061427e8887878681811061425a57fe5b905060200201602081019061426f9190614686565b88888760010181811061380b57fe5b5050915091506142a284848151811061429357fe5b602002602001015183836130f8565b8484600101815181106142b157fe5b6020908102919091010152505060010161421d565b80820182811015613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615178565b60008060006143138686866144f2565b5091945092509050600080808061432b8a898b6144f2565b9296509094509250905060006143418886613f1c565b9050600061434f8886613f1c565b905061435b8184613f1c565b61436783612710613f1c565b11156144e35760006143798383613aee565b90506000614392600261438c8d8a6142c6565b90613f1c565b905060006143a5600261438c8d8c6142c6565b90506143bc8e8b898487816143b657fe5b04613322565b6143cb8d888c8587816143b657fe5b8973ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561441257600080fd5b505af1158015614426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061444a9190614b51565b50508673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561449357600080fd5b505af11580156144a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144cb9190614b51565b50506144d88f8f8f6144f2565b50919d509b50505050505b50505050505093509350939050565b600080600080614503878787613692565b91508173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561454b57600080fd5b505afa15801561455f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145839190614b7f565b6dffffffffffffffffffffffffffff9384169b9290931699509397509095509350505050565b6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b8051613b2b816156a3565b60008083601f8401126145f8578182fd5b50813567ffffffffffffffff81111561460f578182fd5b602083019150836020808302850101111561462957600080fd5b9250929050565b805160068110613b2b57600080fd5b80516dffffffffffffffffffffffffffff81168114613b2b57600080fd5b805167ffffffffffffffff81168114613b2b57600080fd5b803560ff81168114613b2b57600080fd5b600060208284031215614697578081fd5b81356146a2816156a3565b9392505050565b6000602082840312156146ba578081fd5b81516146a2816156a3565b600080604083850312156146d7578081fd5b82516146e2816156a3565b60208401519092506146f3816156a3565b809150509250929050565b600080600080600080600060e0888a031215614718578283fd5b8735614723816156a3565b96506020880135614733816156a3565b955060408801359450606088013593506080880135925060a0880135614758816156a3565b8092505060c0880135905092959891949750929550565b60008060008060008060008060008060006101608c8e031215614790578384fd5b8b3561479b816156a3565b9a5060208c01356147ab816156a3565b995060408c0135985060608c0135975060808c0135965060a08c01356147d0816156a3565b955060c08c0135945060e08c01356147e7816156c8565b93506147f78d6101008e01614675565b92506101208c013591506101408c013590509295989b509295989b9093969950565b600080600080600080600080610100898b031215614835578384fd5b8835614840816156a3565b97506020890135614850816156a3565b965060408901359550606089013594506080890135935060a0890135925060c089013561487c816156a3565b8092505060e089013590509295985092959890939650565b60008082840360e08112156148a7578283fd5b83516148b2816156a3565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156148e3578182fd5b5060405160c0810181811067ffffffffffffffff82111715614903578283fd5b60405261491385602086016145dc565b815261492285604086016145dc565b60208201526060840151604082015261493e856080860161465d565b60608201526149508560a0860161465d565b60808201526149628560c08601614630565b60a0820152809150509250929050565b600080600080600060a08688031215614989578283fd5b8535614994816156a3565b9450602086013593506040860135925060608601356149b2816156a3565b949793965091946080013592915050565b60008060008060008060008060006101208a8c0312156149e1578283fd5b89356149ec816156a3565b985060208a0135975060408a0135965060608a0135614a0a816156a3565b955060808a0135945060a08a0135614a21816156c8565b9350614a308b60c08c01614675565b925060e08a013591506101008a013590509295985092959850929598565b6000806000806000806000806000806101408b8d031215614a6d578384fd5b8a35614a78816156a3565b995060208b0135985060408b0135975060608b0135965060808b0135614a9d816156a3565b955060a08b0135945060c08b0135614ab4816156c8565b9350614ac38c60e08d01614675565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215614afe578081fd5b8735614b09816156a3565b96506020880135955060408801359450606088013593506080880135925060a0880135614758816156a3565b600060208284031215614b46578081fd5b81516146a2816156c8565b60008060408385031215614b63578182fd5b8251614b6e816156d6565b60208401519092506146f3816156d6565b60008060008060808587031215614b94578182fd5b614b9e868661463f565b9350614bad866020870161463f565b9250604085015163ffffffff81168114614bc5578283fd5b6060959095015193969295505050565b600060208284031215614be6578081fd5b5051919050565b600080600060608486031215614c01578081fd5b833592506020840135614c13816156a3565b929592945050506040919091013590565b600080600060408486031215614c38578081fd5b83359250602084013567ffffffffffffffff811115614c55578182fd5b614c61868287016145e7565b9497909650939450505050565b600080600080600060808688031215614c85578283fd5b85359450602086013567ffffffffffffffff811115614ca2578384fd5b614cae888289016145e7565b9095509350506040860135614cc2816156a3565b949793965091946060013592915050565b60008060408385031215614ce5578182fd5b505080516020909101519092909150565b60008060008060008060a08789031215614d0e578384fd5b8635955060208701359450604087013567ffffffffffffffff811115614d32578485fd5b614d3e89828a016145e7565b9095509350506060870135614d52816156a3565b80925050608087013590509295509295509295565b600080600060608486031215614d7b578081fd5b505081359360208301359350604090920135919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614dde818460208701615677565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527fbaeae6b526d52ab9edea88a8a5991ed61443a0c4d6bea03dc99971664961f4b7603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614fc557835183529284019291840191600101614fa9565b50909695505050505050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f466553776170526f757465723a20494e56414c49445f50415448000000000000604082015260600190565b60208082526015908201527f466553776170526f757465723a20455850495245440000000000000000000000604082015260600190565b60208082526013908201527f4665537761703a204e4f5420414c4c4f57454400000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526025908201527f4665537761704c6962726172793a20494e53554646494349454e545f4c49515560408201527f4944495459000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526028908201527f4665537761704c6962726172793a20494e53554646494349454e545f494e505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f466553776170526f757465723a20494e53554646494349454e545f4f5554505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4665537761704c6962726172793a20494e53554646494349454e545f414d4f5560408201527f4e54000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4665537761704c6962726172793a20494e56414c49445f504154480000000000604082015260600190565b60208082526024908201527f466553776170526f757465723a204558434553534956455f494e5055545f414d60408201527f4f554e5400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4665537761703a204e4f5420544f4b454e204f574e4552000000000000000000604082015260600190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f425f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526011908201527f4665537761703a20524154494f20454552000000000000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4665537761704c6962726172793a20494e53554646494349454e545f4f55545060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f415f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f4665537761703a204e4f54204352454154454400000000000000000000000000604082015260600190565b90815260200190565b600084825273ffffffffffffffffffffffffffffffffffffffff8416602083015260606040830152825180606084015261561a816080850160208701615677565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b60005b8381101561569257818101518382015260200161567a565b838111156135d35750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146156c557600080fd5b50565b80151581146156c557600080fd5b6dffffffffffffffffffffffffffff811681146156c557600080fdfea264697066735822122041f4b4957e4772e5653c3c9221462bccc6b173672ddcc040d0b30600931cbb8764736f6c634300060c0033",
      "bin": "60e06040523480156200001157600080fd5b50604051620059203803806200592083398101604081905262000034916200005c565b6001600160601b0319606093841b811660805291831b821660a05290911b1660c052620000c8565b60008060006060848603121562000071578283fd5b83516200007e81620000af565b60208501519093506200009181620000af565b6040850151909250620000a481620000af565b809150509250925092565b6001600160a01b0381168114620000c557600080fd5b50565b60805160601c60a05160601c60c05160601c615728620001f8600039806101c252806105a952806107625280610dd85280610f3652806112ca52806113f7528061148c52806116ac52806117c65280611c585280611d965280611e945280611f075280611f7a5280611ff1528061234c52806123f75280612478528061271252806128b052806129da5280612a6f5280612c395280612c9a5280612d535280612e9d5280612edd5280612f9652508061108852806128215250806106605280610839528061095152806109bc5280610af15280610e8f5280610f1452806111ef528061137552806115ec528061188e5280611a1752806122ed52806124b752806126f0528061284a528061295b52806134c3528061350652806138dd5280613a155280613f7452506157286000f3fe6080604052600436106101a55760003560e01c806396adb337116100e1578063c45a01551161008a578063ead86a2911610064578063ead86a29146104dc578063eef40f31146104f1578063fb3bdb4114610511578063ffbcf7f314610524576101eb565b8063c45a015514610494578063d57b57a5146104a9578063ded9382a146104bc576101eb565b8063ad615dec116100bb578063ad615dec14610424578063ba3690cb14610444578063ba9f20b814610464576101eb565b806396adb337146103c2578063a59600db146103e2578063ad5c464814610402576101eb565b80634a25d94a1161014e5780637ff36ab5116101285780637ff36ab51461034f57806385f8c259146103625780638803dbee146103825780638de9d7d2146103a2576101eb565b80634a25d94a146102e1578063573692c1146103015780636a055fa914610321576101eb565b80632e1db1431161017f5780632e1db1431461028157806338ed1739146102a15780633d221b20146102c1576101eb565b8063054d50d4146101f057806318cbafe5146102265780632195995c14610253576101eb565b366101eb573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101e957fe5b005b600080fd5b3480156101fc57600080fd5b5061021061020b366004614d67565b610537565b60405161021d91906155d0565b60405180910390f35b34801561023257600080fd5b50610246610241366004614cf6565b61054c565b60405161021d9190614f8d565b34801561025f57600080fd5b5061027361026e36600461476f565b61082f565b60405161021d92919061564e565b34801561028d57600080fd5b5061024661029c366004614c24565b61094a565b3480156102ad57600080fd5b506102466102bc366004614cf6565b610978565b3480156102cd57600080fd5b506101e96102dc366004614cf6565b610a8b565b3480156102ed57600080fd5b506102466102fc366004614cf6565b610d84565b34801561030d57600080fd5b5061021061031c3660046149c3565b610f0c565b34801561032d57600080fd5b5061034161033c366004614bed565b61103e565b60405161021d929190614f09565b61024661035d366004614c6e565b61128b565b34801561036e57600080fd5b5061021061037d366004614d67565b61159b565b34801561038e57600080fd5b5061024661039d366004614cf6565b6115a8565b3480156103ae57600080fd5b506102106103bd366004614ae4565b611669565b3480156103ce57600080fd5b506102736103dd366004614819565b611843565b3480156103ee57600080fd5b506101e96103fd366004614cf6565b611c06565b34801561040e57600080fd5b50610417611f05565b60405161021d9190614e69565b34801561043057600080fd5b5061021061043f366004614d67565b611f29565b34801561045057600080fd5b5061027361045f366004614ae4565b611f36565b34801561047057600080fd5b5061048461047f3660046146fe565b61206f565b60405161021d949392919061565c565b3480156104a057600080fd5b506104176122eb565b6101e96104b7366004614c6e565b61230f565b3480156104c857600080fd5b506102736104d7366004614a4e565b6126e6565b3480156104e857600080fd5b5061041761281f565b3480156104fd57600080fd5b5061024661050c366004614c24565b612843565b61024661051f366004614c6e565b612871565b610484610532366004614972565b612baf565b60006105448484846130f8565b949350505050565b60608142811015610592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018181106105f757fe5b905060200201602081019061060c9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006106877f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106106a057fe5b602002602001015110156106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610721878760008181106106f057fe5b90506020020160208101906107059190614686565b33838660008151811061071457fe5b6020026020010151613322565b6107608388888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061344f915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d846001865103815181106107ac57fe5b60200260200101516040518263ffffffff1660e01b81526004016107d091906155d0565b600060405180830381600087803b1580156107ea57600080fd5b505af11580156107fe573d6000803e3d6000fd5b50505050610823858460018651038151811061081657fe5b60200260200101516135d9565b50509695505050505050565b600080600061085f7f00000000000000000000000000000000000000000000000000000000000000008f8f613692565b905060008761086e578c610890565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906108f1903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b5050505050506109368d8d8d60008e8e8e8e611843565b909e909d509b505050505050505050505050565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561370d565b606081428110156109b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006109e37f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106109fc57fe5b60200260200101511015610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610a4c878760008181106106f057fe5b610823838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b8042811015610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b610b5f85856000818110610ad657fe5b9050602002016020810190610aeb9190614686565b33610b597f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b9050602002016020810190610b329190614686565b8a8a6001818110610b3f57fe5b9050602002016020810190610b549190614686565b613692565b8a613322565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610b8f57fe5b9050602002016020810190610ba49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610bdc9190614e69565b60206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190614bd5565b9050610c6c868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250613895915050565b86610d428288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610c9f57fe5b9050602002016020810190610cb49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b60206040518083038186803b158015610d0457600080fd5b505afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190614bd5565b90613aee565b1015610d7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b5050505050505050565b60608142811015610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610e2657fe5b9050602002016020810190610e3b9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b6000610eb67f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b80945081925050508783600081518110610ecc57fe5b602002602001015111156106e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600080610f5a7f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600086610f69578a610f8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf90610fec903390309086908e908d908d908d90600401614e8a565b600060405180830381600087803b15801561100657600080fd5b505af115801561101a573d6000803e3d6000fd5b5050505061102e8c8c8c6000808e8e611669565b9c9b505050505050505050505050565b600080600061104b6145a9565b6040517f2f380b3500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f380b35906110bd908a906004016155d0565b60e06040518083038186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d9190614894565b90925090503373ffffffffffffffffffffffffffffffffffffffff831614611161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061535a565b60038160a00151600581111561117357fe5b10156111ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150ad565b805160208201516040517f883d273000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063883d27309061122a90859085908d908d90600401614f30565b6040805180830381600087803b15801561124357600080fd5b505af1158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b91906146c5565b909a909950975050505050505050565b606081428110156112c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061130c57fe5b90506020020160208101906113219190614686565b73ffffffffffffffffffffffffffffffffffffffff161461136e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b600061139c7f00000000000000000000000000000000000000000000000000000000000000003489896131a9565b809450819250505087836001855103815181106113b557fe5b602002602001015110156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08460008151811061143e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82856000815181106114d457fe5b60200260200101516040518363ffffffff1660e01b81526004016114f9929190614f67565b602060405180830381600087803b15801561151357600080fd5b505af1158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190614b35565b61155157fe5b611590838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b505095945050505050565b6000610544848484613ca7565b606081428110156115e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006116137f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b8094508192505050878360008151811061162957fe5b60200260200101511115610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600081428110156116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6116d6897f00000000000000000000000000000000000000000000000000000000000000008a8a8a8a308a611843565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935061178991508a90869073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190611734903090600401614e69565b60206040518083038186803b15801561174c57600080fd5b505afa158015611760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117849190614bd5565b613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906117fb9085906004016155d0565b600060405180830381600087803b15801561181557600080fd5b505af1158015611829573d6000803e3d6000fd5b5050505061183784836135d9565b50979650505050505050565b6000808242811015611881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b8815611a0a5760006118b47f00000000000000000000000000000000000000000000000000000000000000008d8d613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd9061190d90339085908f90600401614ed8565b602060405180830381600087803b15801561192757600080fd5b505af115801561193b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195f9190614b35565b506040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389afcb44906119b2908990600401614e69565b6040805180830381600087803b1580156119cb57600080fd5b505af11580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a039190614cd3565b9094509250505b8715611b84576000611a3d7f00000000000000000000000000000000000000000000000000000000000000008c8e613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd90611a9690339085908e90600401614ed8565b602060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae89190614b35565b506000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44896040518263ffffffff1660e01b8152600401611b259190614e69565b6040805180830381600087803b158015611b3e57600080fd5b505af1158015611b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b769190614cd3565b969096019594909401935050505b86831015611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906154df565b85821015611bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615391565b509850989650505050505050565b8042811015611c41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611ca657fe5b9050602002016020810190611cbb9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614611d08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b611d1885856000818110610ad657fe5b611d56858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613895915050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611dcb903090600401614e69565b60206040518083038186803b158015611de357600080fd5b505afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190614bd5565b905086811015611e57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90611ec99084906004016155d0565b600060405180830381600087803b158015611ee357600080fd5b505af1158015611ef7573d6000803e3d6000fd5b50505050610d7a84826135d9565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610544848484613e80565b6000808242811015611f74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b611fa48a7f00000000000000000000000000000000000000000000000000000000000000008b8b8b8b308b611843565b9093509150611fb48a8685613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906120269085906004016155d0565b600060405180830381600087803b15801561204057600080fd5b505af1158015612054573d6000803e3d6000fd5b5050505061206285836135d9565b5097509795505050505050565b60008060008084428110156120b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60648811156120eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b87156121f257600060646120ff8c8b613f1c565b8161210657fe5b04935060646121158b8b613f1c565b8161211c57fe5b04925061212b8d8d8686613f6d565b9197509550905061213e8d338389613322565b61214a8c338388613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061219c908b90600401614e69565b602060405180830381600087803b1580156121b657600080fd5b505af11580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ee9190614bd5565b9350505b606488146122dc57600061220c8c8e878d03898f03613f6d565b909c50909a5090506122208d33838e613322565b61222c8c33838d613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061227e908b90600401614e69565b602060405180830381600087803b15801561229857600080fd5b505af11580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d09190614bd5565b958b0195948a01949250505b50975097509750979350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b804281101561234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061238e57fe5b90506020020160208101906123a39190614686565b73ffffffffffffffffffffffffffffffffffffffff16146123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6124e37f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b836040518363ffffffff1660e01b8152600401612501929190614f67565b602060405180830381600087803b15801561251b57600080fd5b505af115801561252f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125539190614b35565b61255957fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061258957fe5b905060200201602081019061259e9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016125d69190614e69565b60206040518083038186803b1580156125ee57600080fd5b505afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126269190614bd5565b9050612666878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613895915050565b87610d428289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061269957fe5b90506020020160208101906126ae9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401610cec9190614e69565b60008060006127367f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600087612745578c612767565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906127c8903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b1580156127e257600080fd5b505af11580156127f6573d6000803e3d6000fd5b5050505061280a8e8e60008f8f8f8f611f36565b909f909e509c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561417f565b606081428110156128ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106128f257fe5b90506020020160208101906129079190614686565b73ffffffffffffffffffffffffffffffffffffffff1614612954576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006129827f0000000000000000000000000000000000000000000000000000000000000000898989613b31565b8094508192505050348360008151811061299857fe5b602002602001015111156129d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db084600081518110612a2157fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a5457600080fd5b505af1158015612a68573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8285600081518110612ab757fe5b60200260200101516040518363ffffffff1660e01b8152600401612adc929190614f67565b602060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2e9190614b35565b612b3457fe5b612b73838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b82600081518110612b8057fe5b6020026020010151341115611590576115903384600081518110612ba057fe5b602002602001015134036135d9565b6000806000808442811015612bf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6064881115612c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b8715612e8d576000612c858b7f00000000000000000000000000000000000000000000000000000000000000006064612c648e8e613f1c565b81612c6b57fe5b046064612c78348f613f1c565b81612c7f57fe5b04613f6d565b91975095509050612c988b338389613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d0057600080fd5b505af1158015612d14573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612d8d915084908990600401614f67565b602060405180830381600087803b158015612da757600080fd5b505af1158015612dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddf9190614b35565b612de557fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290612e37908b90600401614e69565b602060405180830381600087803b158015612e5157600080fd5b505af1158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190614bd5565b9350505b606488146130d757600080612ec87f00000000000000000000000000000000000000000000000000000000000000008d8834038a8f03613f6d565b909c5092509050612edb8c33848e613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f4357600080fd5b505af1158015612f57573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612fd0915085908590600401614f67565b602060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130229190614b35565b61302857fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690636a6278429061307a908c90600401614e69565b602060405180830381600087803b15801561309457600080fd5b505af11580156130a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cc9190614bd5565b968b01969501949250505b833411156130eb576130eb338534036135d9565b5095509550955095915050565b6000808411613133576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906151af565b6000831180156131435750600082115b613179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b60006131858584613f1c565b9050600061319385876142c6565b905080828161319e57fe5b049695505050505050565b6000606060028310156131e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff811180156131ff57600080fd5b50604051908082528060200260200182016040528015613229578160200160208202803683370190505b509050848160008151811061323a57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84018110156133185760008060006132c68a89898781811061328857fe5b905060200201602081019061329d9190614686565b8a8a886001018181106132ac57fe5b90506020020160208101906132c19190614686565b614303565b9250925092506132ea8585815181106132db57fe5b602002602001015184846130f8565b8585600101815181106132f957fe5b60209081029190910101528361330d578095505b505050600101613249565b5094509492505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161335793929190614ed8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516133a59190614dcc565b6000604051808303816000865af19150503d80600081146133e2576040519150601f19603f3d011682016040523d82523d6000602084013e6133e7565b606091505b50915091508180156134115750805115806134115750808060200190518101906134119190614b35565b613447576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061553c565b505050505050565b60005b60018351038110156135d35760008084838151811061346d57fe5b602002602001015185846001018151811061348457fe5b60200260200101519150915060008684600101815181106134a157fe5b602002602001015190506000600287510385106134be57856134ff565b6134ff7f0000000000000000000000000000000000000000000000000000000000000000848988600201815181106134f257fe5b6020026020010151613692565b905061352c7f00000000000000000000000000000000000000000000000000000000000000008585613692565b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9190911690631c6da724906135919085908590602481016155d9565b600060405180830381600087803b1580156135ab57600080fd5b505af11580156135bf573d6000803e3d6000fd5b505060019096019550613452945050505050565b50505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516136109190614dcc565b60006040518083038185875af1925050503d806000811461364d576040519150601f19603f3d011682016040523d82523d6000602084013e613652565b606091505b505090508061368d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615425565b505050565b60008383836040516020016136a8929190614d92565b604051602081830303815290604052805190602001206040516020016136cf929190614de8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6060600282101561374a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff8111801561376157600080fd5b5060405190808252806020026020018201604052801561378b578160200160208202803683370190505b509050838160018351038151811061379f57fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b801561388c57600080613825888787600187038181106137ea57fe5b90506020020160208101906137ff9190614686565b88888781811061380b57fe5b90506020020160208101906138209190614686565b6144f2565b50509150915061384984848151811061383a57fe5b60200260200101518383613ca7565b84600185038151811061385857fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016137ce565b50949350505050565b60005b600183510381101561368d576000808483815181106138b357fe5b60200260200101518584600101815181106138ca57fe5b60200260200101519150915060006139037f00000000000000000000000000000000000000000000000000000000000000008484613692565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561395157600080fd5b505afa158015613965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139899190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506139ec828873ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b93506139f98483836130f8565b92505050600060028951038710613a105787613a44565b613a447f0000000000000000000000000000000000000000000000000000000000000000868b8a600201815181106134f257fe5b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915290915073ffffffffffffffffffffffffffffffffffffffff851690631c6da72490613aaa9085908590602481016155d9565b600060405180830381600087803b158015613ac457600080fd5b505af1158015613ad8573d6000803e3d6000fd5b5050600190980197506138989650505050505050565b80820382811115613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990614fd1565b92915050565b600060606002831015613b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff81118015613b8757600080fd5b50604051908082528060200260200182016040528015613bb1578160200160208202803683370190505b5090508481600183510381518110613bc557fe5b60209081029190910101526000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85015b8015613c9b57613c3189888860018503818110613c1057fe5b9050602002016020810190613c259190614686565b8989858181106132ac57fe5b86519097509194509250613c5a90859083908110613c4b57fe5b60200260200101518484613ca7565b846001830381518110613c6957fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613bf7565b50505094509492505050565b6000808411613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615482565b600083118015613cf25750600082115b613d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b6000613d348486613f1c565b90506000613d428487613aee565b905080613d4f83826142c6565b8161319e57fe5b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613d89929190614f67565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613dd79190614dcc565b6000604051808303816000865af19150503d8060008114613e14576040519150601f19603f3d011682016040523d82523d6000602084013e613e19565b606091505b5091509150818015613e43575080511580613e43575080806020019051810190613e439190614b35565b613e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615008565b5050505050565b6000808411613ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615269565b600083118015613ecb5750600082115b613f01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b82613f0c8584613f1c565b81613f1357fe5b04949350505050565b6000811580613f3757505080820282828281613f3457fe5b04145b613b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150e4565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390588886040518363ffffffff1660e01b8152600401613fcd929190614f09565b60206040518083038186803b158015613fe557600080fd5b505afa158015613ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401d91906146a9565b905073ffffffffffffffffffffffffffffffffffffffff811661406c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615599565b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b1580156140b557600080fd5b505afa1580156140c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ed9190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150816000148015614121575080155b1561413157869450859350614173565b600061413e888484613e80565b905086811161415257879550935083614171565b600061415f888486613e80565b90508881111561416b57fe5b95508694505b505b50509450945094915050565b606060028210156141bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff811180156141d357600080fd5b506040519080825280602002602001820160405280156141fd578160200160208202803683370190505b509050838160008151811061420e57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830181101561388c5760008061427e8887878681811061425a57fe5b905060200201602081019061426f9190614686565b88888760010181811061380b57fe5b5050915091506142a284848151811061429357fe5b602002602001015183836130f8565b8484600101815181106142b157fe5b6020908102919091010152505060010161421d565b80820182811015613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615178565b60008060006143138686866144f2565b5091945092509050600080808061432b8a898b6144f2565b9296509094509250905060006143418886613f1c565b9050600061434f8886613f1c565b905061435b8184613f1c565b61436783612710613f1c565b11156144e35760006143798383613aee565b90506000614392600261438c8d8a6142c6565b90613f1c565b905060006143a5600261438c8d8c6142c6565b90506143bc8e8b898487816143b657fe5b04613322565b6143cb8d888c8587816143b657fe5b8973ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561441257600080fd5b505af1158015614426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061444a9190614b51565b50508673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561449357600080fd5b505af11580156144a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144cb9190614b51565b50506144d88f8f8f6144f2565b50919d509b50505050505b50505050505093509350939050565b600080600080614503878787613692565b91508173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561454b57600080fd5b505afa15801561455f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145839190614b7f565b6dffffffffffffffffffffffffffff9384169b9290931699509397509095509350505050565b6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b8051613b2b816156a3565b60008083601f8401126145f8578182fd5b50813567ffffffffffffffff81111561460f578182fd5b602083019150836020808302850101111561462957600080fd5b9250929050565b805160068110613b2b57600080fd5b80516dffffffffffffffffffffffffffff81168114613b2b57600080fd5b805167ffffffffffffffff81168114613b2b57600080fd5b803560ff81168114613b2b57600080fd5b600060208284031215614697578081fd5b81356146a2816156a3565b9392505050565b6000602082840312156146ba578081fd5b81516146a2816156a3565b600080604083850312156146d7578081fd5b82516146e2816156a3565b60208401519092506146f3816156a3565b809150509250929050565b600080600080600080600060e0888a031215614718578283fd5b8735614723816156a3565b96506020880135614733816156a3565b955060408801359450606088013593506080880135925060a0880135614758816156a3565b8092505060c0880135905092959891949750929550565b60008060008060008060008060008060006101608c8e031215614790578384fd5b8b3561479b816156a3565b9a5060208c01356147ab816156a3565b995060408c0135985060608c0135975060808c0135965060a08c01356147d0816156a3565b955060c08c0135945060e08c01356147e7816156c8565b93506147f78d6101008e01614675565b92506101208c013591506101408c013590509295989b509295989b9093969950565b600080600080600080600080610100898b031215614835578384fd5b8835614840816156a3565b97506020890135614850816156a3565b965060408901359550606089013594506080890135935060a0890135925060c089013561487c816156a3565b8092505060e089013590509295985092959890939650565b60008082840360e08112156148a7578283fd5b83516148b2816156a3565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156148e3578182fd5b5060405160c0810181811067ffffffffffffffff82111715614903578283fd5b60405261491385602086016145dc565b815261492285604086016145dc565b60208201526060840151604082015261493e856080860161465d565b60608201526149508560a0860161465d565b60808201526149628560c08601614630565b60a0820152809150509250929050565b600080600080600060a08688031215614989578283fd5b8535614994816156a3565b9450602086013593506040860135925060608601356149b2816156a3565b949793965091946080013592915050565b60008060008060008060008060006101208a8c0312156149e1578283fd5b89356149ec816156a3565b985060208a0135975060408a0135965060608a0135614a0a816156a3565b955060808a0135945060a08a0135614a21816156c8565b9350614a308b60c08c01614675565b925060e08a013591506101008a013590509295985092959850929598565b6000806000806000806000806000806101408b8d031215614a6d578384fd5b8a35614a78816156a3565b995060208b0135985060408b0135975060608b0135965060808b0135614a9d816156a3565b955060a08b0135945060c08b0135614ab4816156c8565b9350614ac38c60e08d01614675565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215614afe578081fd5b8735614b09816156a3565b96506020880135955060408801359450606088013593506080880135925060a0880135614758816156a3565b600060208284031215614b46578081fd5b81516146a2816156c8565b60008060408385031215614b63578182fd5b8251614b6e816156d6565b60208401519092506146f3816156d6565b60008060008060808587031215614b94578182fd5b614b9e868661463f565b9350614bad866020870161463f565b9250604085015163ffffffff81168114614bc5578283fd5b6060959095015193969295505050565b600060208284031215614be6578081fd5b5051919050565b600080600060608486031215614c01578081fd5b833592506020840135614c13816156a3565b929592945050506040919091013590565b600080600060408486031215614c38578081fd5b83359250602084013567ffffffffffffffff811115614c55578182fd5b614c61868287016145e7565b9497909650939450505050565b600080600080600060808688031215614c85578283fd5b85359450602086013567ffffffffffffffff811115614ca2578384fd5b614cae888289016145e7565b9095509350506040860135614cc2816156a3565b949793965091946060013592915050565b60008060408385031215614ce5578182fd5b505080516020909101519092909150565b60008060008060008060a08789031215614d0e578384fd5b8635955060208701359450604087013567ffffffffffffffff811115614d32578485fd5b614d3e89828a016145e7565b9095509350506060870135614d52816156a3565b80925050608087013590509295509295509295565b600080600060608486031215614d7b578081fd5b505081359360208301359350604090920135919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614dde818460208701615677565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527fbaeae6b526d52ab9edea88a8a5991ed61443a0c4d6bea03dc99971664961f4b7603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614fc557835183529284019291840191600101614fa9565b50909695505050505050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f466553776170526f757465723a20494e56414c49445f50415448000000000000604082015260600190565b60208082526015908201527f466553776170526f757465723a20455850495245440000000000000000000000604082015260600190565b60208082526013908201527f4665537761703a204e4f5420414c4c4f57454400000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526025908201527f4665537761704c6962726172793a20494e53554646494349454e545f4c49515560408201527f4944495459000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526028908201527f4665537761704c6962726172793a20494e53554646494349454e545f494e505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f466553776170526f757465723a20494e53554646494349454e545f4f5554505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4665537761704c6962726172793a20494e53554646494349454e545f414d4f5560408201527f4e54000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4665537761704c6962726172793a20494e56414c49445f504154480000000000604082015260600190565b60208082526024908201527f466553776170526f757465723a204558434553534956455f494e5055545f414d60408201527f4f554e5400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4665537761703a204e4f5420544f4b454e204f574e4552000000000000000000604082015260600190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f425f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526011908201527f4665537761703a20524154494f20454552000000000000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4665537761704c6962726172793a20494e53554646494349454e545f4f55545060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f415f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f4665537761703a204e4f54204352454154454400000000000000000000000000604082015260600190565b90815260200190565b600084825273ffffffffffffffffffffffffffffffffffffffff8416602083015260606040830152825180606084015261561a816080850160208701615677565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b60005b8381101561569257818101518382015260200161567a565b838111156135d35750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146156c557600080fd5b50565b80151581146156c557600080fd5b6dffffffffffffffffffffffffffff811681146156c557600080fdfea264697066735822122041f4b4957e4772e5653c3c9221462bccc6b173672ddcc040d0b30600931cbb8764736f6c634300060c0033",
      "bin-runtime": "6080604052600436106101a55760003560e01c806396adb337116100e1578063c45a01551161008a578063ead86a2911610064578063ead86a29146104dc578063eef40f31146104f1578063fb3bdb4114610511578063ffbcf7f314610524576101eb565b8063c45a015514610494578063d57b57a5146104a9578063ded9382a146104bc576101eb565b8063ad615dec116100bb578063ad615dec14610424578063ba3690cb14610444578063ba9f20b814610464576101eb565b806396adb337146103c2578063a59600db146103e2578063ad5c464814610402576101eb565b80634a25d94a1161014e5780637ff36ab5116101285780637ff36ab51461034f57806385f8c259146103625780638803dbee146103825780638de9d7d2146103a2576101eb565b80634a25d94a146102e1578063573692c1146103015780636a055fa914610321576101eb565b80632e1db1431161017f5780632e1db1431461028157806338ed1739146102a15780633d221b20146102c1576101eb565b8063054d50d4146101f057806318cbafe5146102265780632195995c14610253576101eb565b366101eb573373ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016146101e957fe5b005b600080fd5b3480156101fc57600080fd5b5061021061020b366004614d67565b610537565b60405161021d91906155d0565b60405180910390f35b34801561023257600080fd5b50610246610241366004614cf6565b61054c565b60405161021d9190614f8d565b34801561025f57600080fd5b5061027361026e36600461476f565b61082f565b60405161021d92919061564e565b34801561028d57600080fd5b5061024661029c366004614c24565b61094a565b3480156102ad57600080fd5b506102466102bc366004614cf6565b610978565b3480156102cd57600080fd5b506101e96102dc366004614cf6565b610a8b565b3480156102ed57600080fd5b506102466102fc366004614cf6565b610d84565b34801561030d57600080fd5b5061021061031c3660046149c3565b610f0c565b34801561032d57600080fd5b5061034161033c366004614bed565b61103e565b60405161021d929190614f09565b61024661035d366004614c6e565b61128b565b34801561036e57600080fd5b5061021061037d366004614d67565b61159b565b34801561038e57600080fd5b5061024661039d366004614cf6565b6115a8565b3480156103ae57600080fd5b506102106103bd366004614ae4565b611669565b3480156103ce57600080fd5b506102736103dd366004614819565b611843565b3480156103ee57600080fd5b506101e96103fd366004614cf6565b611c06565b34801561040e57600080fd5b50610417611f05565b60405161021d9190614e69565b34801561043057600080fd5b5061021061043f366004614d67565b611f29565b34801561045057600080fd5b5061027361045f366004614ae4565b611f36565b34801561047057600080fd5b5061048461047f3660046146fe565b61206f565b60405161021d949392919061565c565b3480156104a057600080fd5b506104176122eb565b6101e96104b7366004614c6e565b61230f565b3480156104c857600080fd5b506102736104d7366004614a4e565b6126e6565b3480156104e857600080fd5b5061041761281f565b3480156104fd57600080fd5b5061024661050c366004614c24565b612843565b61024661051f366004614c6e565b612871565b610484610532366004614972565b612baf565b60006105448484846130f8565b949350505050565b60608142811015610592576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81018181106105f757fe5b905060200201602081019061060c9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610659576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006106877f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106106a057fe5b602002602001015110156106e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610721878760008181106106f057fe5b90506020020160208101906107059190614686565b33838660008151811061071457fe5b6020026020010151613322565b6107608388888080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525030925061344f915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16632e1a7d4d846001865103815181106107ac57fe5b60200260200101516040518263ffffffff1660e01b81526004016107d091906155d0565b600060405180830381600087803b1580156107ea57600080fd5b505af11580156107fe573d6000803e3d6000fd5b50505050610823858460018651038151811061081657fe5b60200260200101516135d9565b50509695505050505050565b600080600061085f7f00000000000000000000000000000000000000000000000000000000000000008f8f613692565b905060008761086e578c610890565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906108f1903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b15801561090b57600080fd5b505af115801561091f573d6000803e3d6000fd5b5050505050506109368d8d8d60008e8e8e8e611843565b909e909d509b505050505050505050505050565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561370d565b606081428110156109b5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006109e37f00000000000000000000000000000000000000000000000000000000000000008a89896131a9565b809450819250505087836001855103815181106109fc57fe5b60200260200101511015610a3c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b610a4c878760008181106106f057fe5b610823838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b8042811015610ac6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b610b5f85856000818110610ad657fe5b9050602002016020810190610aeb9190614686565b33610b597f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b9050602002016020810190610b329190614686565b8a8a6001818110610b3f57fe5b9050602002016020810190610b549190614686565b613692565b8a613322565b600085857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610b8f57fe5b9050602002016020810190610ba49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231856040518263ffffffff1660e01b8152600401610bdc9190614e69565b60206040518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190614bd5565b9050610c6c868680806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250889250613895915050565b86610d428288887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610c9f57fe5b9050602002016020810190610cb49190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b60206040518083038186803b158015610d0457600080fd5b505afa158015610d18573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d3c9190614bd5565b90613aee565b1015610d7a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b5050505050505050565b60608142811015610dc1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001686867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110610e2657fe5b9050602002016020810190610e3b9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614610e88576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b6000610eb67f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b80945081925050508783600081518110610ecc57fe5b602002602001015111156106e0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600080610f5a7f00000000000000000000000000000000000000000000000000000000000000008c7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600086610f69578a610f8b565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf90610fec903390309086908e908d908d908d90600401614e8a565b600060405180830381600087803b15801561100657600080fd5b505af115801561101a573d6000803e3d6000fd5b5050505061102e8c8c8c6000808e8e611669565b9c9b505050505050505050505050565b600080600061104b6145a9565b6040517f2f380b3500000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632f380b35906110bd908a906004016155d0565b60e06040518083038186803b1580156110d557600080fd5b505afa1580156110e9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061110d9190614894565b90925090503373ffffffffffffffffffffffffffffffffffffffff831614611161576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061535a565b60038160a00151600581111561117357fe5b10156111ab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150ad565b805160208201516040517f883d273000000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f0000000000000000000000000000000000000000000000000000000000000000169063883d27309061122a90859085908d908d90600401614f30565b6040805180830381600087803b15801561124357600080fd5b505af1158015611257573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061127b91906146c5565b909a909950975050505050505050565b606081428110156112c8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168686600081811061130c57fe5b90506020020160208101906113219190614686565b73ffffffffffffffffffffffffffffffffffffffff161461136e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b600061139c7f00000000000000000000000000000000000000000000000000000000000000003489896131a9565b809450819250505087836001855103815181106113b557fe5b602002602001015110156113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db08460008151811061143e57fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b15801561147157600080fd5b505af1158015611485573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb82856000815181106114d457fe5b60200260200101516040518363ffffffff1660e01b81526004016114f9929190614f67565b602060405180830381600087803b15801561151357600080fd5b505af1158015611527573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061154b9190614b35565b61155157fe5b611590838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b505095945050505050565b6000610544848484613ca7565b606081428110156115e5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60006116137f00000000000000000000000000000000000000000000000000000000000000008a8989613b31565b8094508192505050878360008151811061162957fe5b60200260200101511115610a3c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b600081428110156116a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6116d6897f00000000000000000000000000000000000000000000000000000000000000008a8a8a8a308a611843565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815290935061178991508a90869073ffffffffffffffffffffffffffffffffffffffff8316906370a0823190611734903090600401614e69565b60206040518083038186803b15801561174c57600080fd5b505afa158015611760573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117849190614bd5565b613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906117fb9085906004016155d0565b600060405180830381600087803b15801561181557600080fd5b505af1158015611829573d6000803e3d6000fd5b5050505061183784836135d9565b50979650505050505050565b6000808242811015611881576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b8815611a0a5760006118b47f00000000000000000000000000000000000000000000000000000000000000008d8d613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd9061190d90339085908f90600401614ed8565b602060405180830381600087803b15801561192757600080fd5b505af115801561193b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061195f9190614b35565b506040517f89afcb4400000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8216906389afcb44906119b2908990600401614e69565b6040805180830381600087803b1580156119cb57600080fd5b505af11580156119df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a039190614cd3565b9094509250505b8715611b84576000611a3d7f00000000000000000000000000000000000000000000000000000000000000008c8e613692565b6040517f23b872dd00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff8216906323b872dd90611a9690339085908e90600401614ed8565b602060405180830381600087803b158015611ab057600080fd5b505af1158015611ac4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae89190614b35565b506000808273ffffffffffffffffffffffffffffffffffffffff166389afcb44896040518263ffffffff1660e01b8152600401611b259190614e69565b6040805180830381600087803b158015611b3e57600080fd5b505af1158015611b52573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b769190614cd3565b969096019594909401935050505b86831015611bbe576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906154df565b85821015611bf8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615391565b509850989650505050505050565b8042811015611c41576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b73ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001685857fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101818110611ca657fe5b9050602002016020810190611cbb9190614686565b73ffffffffffffffffffffffffffffffffffffffff1614611d08576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b611d1885856000818110610ad657fe5b611d56858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250309250613895915050565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815260009073ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016906370a0823190611dcb903090600401614e69565b60206040518083038186803b158015611de357600080fd5b505afa158015611df7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e1b9190614bd5565b905086811015611e57576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061520c565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d90611ec99084906004016155d0565b600060405180830381600087803b158015611ee357600080fd5b505af1158015611ef7573d6000803e3d6000fd5b50505050610d7a84826135d9565b7f000000000000000000000000000000000000000000000000000000000000000081565b6000610544848484613e80565b6000808242811015611f74576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b611fa48a7f00000000000000000000000000000000000000000000000000000000000000008b8b8b8b308b611843565b9093509150611fb48a8685613d56565b6040517f2e1a7d4d00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f00000000000000000000000000000000000000000000000000000000000000001690632e1a7d4d906120269085906004016155d0565b600060405180830381600087803b15801561204057600080fd5b505af1158015612054573d6000803e3d6000fd5b5050505061206285836135d9565b5097509795505050505050565b60008060008084428110156120b0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b60648811156120eb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b87156121f257600060646120ff8c8b613f1c565b8161210657fe5b04935060646121158b8b613f1c565b8161211c57fe5b04925061212b8d8d8686613f6d565b9197509550905061213e8d338389613322565b61214a8c338388613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061219c908b90600401614e69565b602060405180830381600087803b1580156121b657600080fd5b505af11580156121ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121ee9190614bd5565b9350505b606488146122dc57600061220c8c8e878d03898f03613f6d565b909c50909a5090506122208d33838e613322565b61222c8c33838d613322565b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a6278429061227e908b90600401614e69565b602060405180830381600087803b15801561229857600080fd5b505af11580156122ac573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122d09190614bd5565b958b0195948a01949250505b50975097509750979350505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b804281101561234a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168585600081811061238e57fe5b90506020020160208101906123a39190614686565b73ffffffffffffffffffffffffffffffffffffffff16146123f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60003490507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b15801561245d57600080fd5b505af1158015612471573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6124e37f000000000000000000000000000000000000000000000000000000000000000089896000818110610b1d57fe5b836040518363ffffffff1660e01b8152600401612501929190614f67565b602060405180830381600087803b15801561251b57600080fd5b505af115801561252f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906125539190614b35565b61255957fe5b600086867fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061258957fe5b905060200201602081019061259e9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231866040518263ffffffff1660e01b81526004016125d69190614e69565b60206040518083038186803b1580156125ee57600080fd5b505afa158015612602573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906126269190614bd5565b9050612666878780806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250899250613895915050565b87610d428289897fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff810181811061269957fe5b90506020020160208101906126ae9190614686565b73ffffffffffffffffffffffffffffffffffffffff166370a08231896040518263ffffffff1660e01b8152600401610cec9190614e69565b60008060006127367f00000000000000000000000000000000000000000000000000000000000000008e7f0000000000000000000000000000000000000000000000000000000000000000613692565b9050600087612745578c612767565b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff5b6040517fd505accf00000000000000000000000000000000000000000000000000000000815290915073ffffffffffffffffffffffffffffffffffffffff83169063d505accf906127c8903390309086908f908e908e908e90600401614e8a565b600060405180830381600087803b1580156127e257600080fd5b505af11580156127f6573d6000803e3d6000fd5b5050505061280a8e8e60008f8f8f8f611f36565b909f909e509c50505050505050505050505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b60606105447f000000000000000000000000000000000000000000000000000000000000000085858561417f565b606081428110156128ae576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff16868660008181106128f257fe5b90506020020160208101906129079190614686565b73ffffffffffffffffffffffffffffffffffffffff1614612954576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061503f565b60006129827f0000000000000000000000000000000000000000000000000000000000000000898989613b31565b8094508192505050348360008151811061299857fe5b602002602001015111156129d8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152fd565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db084600081518110612a2157fe5b60200260200101516040518263ffffffff1660e01b81526004016000604051808303818588803b158015612a5457600080fd5b505af1158015612a68573d6000803e3d6000fd5b50505050507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8285600081518110612ab757fe5b60200260200101516040518363ffffffff1660e01b8152600401612adc929190614f67565b602060405180830381600087803b158015612af657600080fd5b505af1158015612b0a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612b2e9190614b35565b612b3457fe5b612b73838888808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508a925061344f915050565b82600081518110612b8057fe5b6020026020010151341115611590576115903384600081518110612ba057fe5b602002602001015134036135d9565b6000806000808442811015612bf0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615076565b6064881115612c2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906153ee565b8715612e8d576000612c858b7f00000000000000000000000000000000000000000000000000000000000000006064612c648e8e613f1c565b81612c6b57fe5b046064612c78348f613f1c565b81612c7f57fe5b04613f6d565b91975095509050612c988b338389613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0866040518263ffffffff1660e01b81526004016000604051808303818588803b158015612d0057600080fd5b505af1158015612d14573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612d8d915084908990600401614f67565b602060405180830381600087803b158015612da757600080fd5b505af1158015612dbb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612ddf9190614b35565b612de557fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff821690636a62784290612e37908b90600401614e69565b602060405180830381600087803b158015612e5157600080fd5b505af1158015612e65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612e899190614bd5565b9350505b606488146130d757600080612ec87f00000000000000000000000000000000000000000000000000000000000000008d8834038a8f03613f6d565b909c5092509050612edb8c33848e613322565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff1660e01b81526004016000604051808303818588803b158015612f4357600080fd5b505af1158015612f57573d6000803e3d6000fd5b50506040517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff7f000000000000000000000000000000000000000000000000000000000000000016935063a9059cbb9250612fd0915085908590600401614f67565b602060405180830381600087803b158015612fea57600080fd5b505af1158015612ffe573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130229190614b35565b61302857fe5b6040517f6a62784200000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff831690636a6278429061307a908c90600401614e69565b602060405180830381600087803b15801561309457600080fd5b505af11580156130a8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130cc9190614bd5565b968b01969501949250505b833411156130eb576130eb338534036135d9565b5095509550955095915050565b6000808411613133576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906151af565b6000831180156131435750600082115b613179576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b60006131858584613f1c565b9050600061319385876142c6565b905080828161319e57fe5b049695505050505050565b6000606060028310156131e8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff811180156131ff57600080fd5b50604051908082528060200260200182016040528015613229578160200160208202803683370190505b509050848160008151811061323a57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84018110156133185760008060006132c68a89898781811061328857fe5b905060200201602081019061329d9190614686565b8a8a886001018181106132ac57fe5b90506020020160208101906132c19190614686565b614303565b9250925092506132ea8585815181106132db57fe5b602002602001015184846130f8565b8585600101815181106132f957fe5b60209081029190910101528361330d578095505b505050600101613249565b5094509492505050565b600060608573ffffffffffffffffffffffffffffffffffffffff166323b872dd86868660405160240161335793929190614ed8565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516133a59190614dcc565b6000604051808303816000865af19150503d80600081146133e2576040519150601f19603f3d011682016040523d82523d6000602084013e6133e7565b606091505b50915091508180156134115750805115806134115750808060200190518101906134119190614b35565b613447576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061553c565b505050505050565b60005b60018351038110156135d35760008084838151811061346d57fe5b602002602001015185846001018151811061348457fe5b60200260200101519150915060008684600101815181106134a157fe5b602002602001015190506000600287510385106134be57856134ff565b6134ff7f0000000000000000000000000000000000000000000000000000000000000000848988600201815181106134f257fe5b6020026020010151613692565b905061352c7f00000000000000000000000000000000000000000000000000000000000000008585613692565b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915273ffffffffffffffffffffffffffffffffffffffff9190911690631c6da724906135919085908590602481016155d9565b600060405180830381600087803b1580156135ab57600080fd5b505af11580156135bf573d6000803e3d6000fd5b505060019096019550613452945050505050565b50505050565b6040805160008082526020820190925273ffffffffffffffffffffffffffffffffffffffff84169083906040516136109190614dcc565b60006040518083038185875af1925050503d806000811461364d576040519150601f19603f3d011682016040523d82523d6000602084013e613652565b606091505b505090508061368d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615425565b505050565b60008383836040516020016136a8929190614d92565b604051602081830303815290604052805190602001206040516020016136cf929190614de8565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190528051602090910120949350505050565b6060600282101561374a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff8111801561376157600080fd5b5060405190808252806020026020018201604052801561378b578160200160208202803683370190505b509050838160018351038151811061379f57fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82015b801561388c57600080613825888787600187038181106137ea57fe5b90506020020160208101906137ff9190614686565b88888781811061380b57fe5b90506020020160208101906138209190614686565b6144f2565b50509150915061384984848151811061383a57fe5b60200260200101518383613ca7565b84600185038151811061385857fe5b602090810291909101015250507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff016137ce565b50949350505050565b60005b600183510381101561368d576000808483815181106138b357fe5b60200260200101518584600101815181106138ca57fe5b60200260200101519150915060006139037f00000000000000000000000000000000000000000000000000000000000000008484613692565b90506000806000808473ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561395157600080fd5b505afa158015613965573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906139899190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff1691506139ec828873ffffffffffffffffffffffffffffffffffffffff166370a08231886040518263ffffffff1660e01b8152600401610cec9190614e69565b93506139f98483836130f8565b92505050600060028951038710613a105787613a44565b613a447f0000000000000000000000000000000000000000000000000000000000000000868b8a600201815181106134f257fe5b604080516000815260208101918290527f1c6da7240000000000000000000000000000000000000000000000000000000090915290915073ffffffffffffffffffffffffffffffffffffffff851690631c6da72490613aaa9085908590602481016155d9565b600060405180830381600087803b158015613ac457600080fd5b505af1158015613ad8573d6000803e3d6000fd5b5050600190980197506138989650505050505050565b80820382811115613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990614fd1565b92915050565b600060606002831015613b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8267ffffffffffffffff81118015613b8757600080fd5b50604051908082528060200260200182016040528015613bb1578160200160208202803683370190505b5090508481600183510381518110613bc557fe5b60209081029190910101526000807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff85015b8015613c9b57613c3189888860018503818110613c1057fe5b9050602002016020810190613c259190614686565b8989858181106132ac57fe5b86519097509194509250613c5a90859083908110613c4b57fe5b60200260200101518484613ca7565b846001830381518110613c6957fe5b60209081029190910101527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01613bf7565b50505094509492505050565b6000808411613ce2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615482565b600083118015613cf25750600082115b613d28576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b6000613d348486613f1c565b90506000613d428487613aee565b905080613d4f83826142c6565b8161319e57fe5b600060608473ffffffffffffffffffffffffffffffffffffffff1663a9059cbb8585604051602401613d89929190614f67565b6040516020818303038152906040529060e01b6020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff8381831617835250505050604051613dd79190614dcc565b6000604051808303816000865af19150503d8060008114613e14576040519150601f19603f3d011682016040523d82523d6000602084013e613e19565b606091505b5091509150818015613e43575080511580613e43575080806020019051810190613e439190614b35565b613e79576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615008565b5050505050565b6000808411613ebb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615269565b600083118015613ecb5750600082115b613f01576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105899061511b565b82613f0c8584613f1c565b81613f1357fe5b04949350505050565b6000811580613f3757505080820282828281613f3457fe5b04145b613b2b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906150e4565b60008060007f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663e6a4390588886040518363ffffffff1660e01b8152600401613fcd929190614f09565b60206040518083038186803b158015613fe557600080fd5b505afa158015613ff9573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061401d91906146a9565b905073ffffffffffffffffffffffffffffffffffffffff811661406c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615599565b6000808273ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b1580156140b557600080fd5b505afa1580156140c9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906140ed9190614b7f565b50506dffffffffffffffffffffffffffff1691506dffffffffffffffffffffffffffff169150816000148015614121575080155b1561413157869450859350614173565b600061413e888484613e80565b905086811161415257879550935083614171565b600061415f888486613e80565b90508881111561416b57fe5b95508694505b505b50509450945094915050565b606060028210156141bc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610589906152c6565b8167ffffffffffffffff811180156141d357600080fd5b506040519080825280602002602001820160405280156141fd578160200160208202803683370190505b509050838160008151811061420e57fe5b60200260200101818152505060005b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff830181101561388c5760008061427e8887878681811061425a57fe5b905060200201602081019061426f9190614686565b88888760010181811061380b57fe5b5050915091506142a284848151811061429357fe5b602002602001015183836130f8565b8484600101815181106142b157fe5b6020908102919091010152505060010161421d565b80820182811015613b2b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161058990615178565b60008060006143138686866144f2565b5091945092509050600080808061432b8a898b6144f2565b9296509094509250905060006143418886613f1c565b9050600061434f8886613f1c565b905061435b8184613f1c565b61436783612710613f1c565b11156144e35760006143798383613aee565b90506000614392600261438c8d8a6142c6565b90613f1c565b905060006143a5600261438c8d8c6142c6565b90506143bc8e8b898487816143b657fe5b04613322565b6143cb8d888c8587816143b657fe5b8973ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561441257600080fd5b505af1158015614426573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061444a9190614b51565b50508673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b81526004016040805180830381600087803b15801561449357600080fd5b505af11580156144a7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906144cb9190614b51565b50506144d88f8f8f6144f2565b50919d509b50505050505b50505050505093509350939050565b600080600080614503878787613692565b91508173ffffffffffffffffffffffffffffffffffffffff16630902f1ac6040518163ffffffff1660e01b815260040160806040518083038186803b15801561454b57600080fd5b505afa15801561455f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906145839190614b7f565b6dffffffffffffffffffffffffffff9384169b9290931699509397509095509350505050565b6040805160c08101825260008082526020820181905291810182905260608101829052608081018290529060a082015290565b8051613b2b816156a3565b60008083601f8401126145f8578182fd5b50813567ffffffffffffffff81111561460f578182fd5b602083019150836020808302850101111561462957600080fd5b9250929050565b805160068110613b2b57600080fd5b80516dffffffffffffffffffffffffffff81168114613b2b57600080fd5b805167ffffffffffffffff81168114613b2b57600080fd5b803560ff81168114613b2b57600080fd5b600060208284031215614697578081fd5b81356146a2816156a3565b9392505050565b6000602082840312156146ba578081fd5b81516146a2816156a3565b600080604083850312156146d7578081fd5b82516146e2816156a3565b60208401519092506146f3816156a3565b809150509250929050565b600080600080600080600060e0888a031215614718578283fd5b8735614723816156a3565b96506020880135614733816156a3565b955060408801359450606088013593506080880135925060a0880135614758816156a3565b8092505060c0880135905092959891949750929550565b60008060008060008060008060008060006101608c8e031215614790578384fd5b8b3561479b816156a3565b9a5060208c01356147ab816156a3565b995060408c0135985060608c0135975060808c0135965060a08c01356147d0816156a3565b955060c08c0135945060e08c01356147e7816156c8565b93506147f78d6101008e01614675565b92506101208c013591506101408c013590509295989b509295989b9093969950565b600080600080600080600080610100898b031215614835578384fd5b8835614840816156a3565b97506020890135614850816156a3565b965060408901359550606089013594506080890135935060a0890135925060c089013561487c816156a3565b8092505060e089013590509295985092959890939650565b60008082840360e08112156148a7578283fd5b83516148b2816156a3565b925060c07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0820112156148e3578182fd5b5060405160c0810181811067ffffffffffffffff82111715614903578283fd5b60405261491385602086016145dc565b815261492285604086016145dc565b60208201526060840151604082015261493e856080860161465d565b60608201526149508560a0860161465d565b60808201526149628560c08601614630565b60a0820152809150509250929050565b600080600080600060a08688031215614989578283fd5b8535614994816156a3565b9450602086013593506040860135925060608601356149b2816156a3565b949793965091946080013592915050565b60008060008060008060008060006101208a8c0312156149e1578283fd5b89356149ec816156a3565b985060208a0135975060408a0135965060608a0135614a0a816156a3565b955060808a0135945060a08a0135614a21816156c8565b9350614a308b60c08c01614675565b925060e08a013591506101008a013590509295985092959850929598565b6000806000806000806000806000806101408b8d031215614a6d578384fd5b8a35614a78816156a3565b995060208b0135985060408b0135975060608b0135965060808b0135614a9d816156a3565b955060a08b0135945060c08b0135614ab4816156c8565b9350614ac38c60e08d01614675565b92506101008b013591506101208b013590509295989b9194979a5092959850565b600080600080600080600060e0888a031215614afe578081fd5b8735614b09816156a3565b96506020880135955060408801359450606088013593506080880135925060a0880135614758816156a3565b600060208284031215614b46578081fd5b81516146a2816156c8565b60008060408385031215614b63578182fd5b8251614b6e816156d6565b60208401519092506146f3816156d6565b60008060008060808587031215614b94578182fd5b614b9e868661463f565b9350614bad866020870161463f565b9250604085015163ffffffff81168114614bc5578283fd5b6060959095015193969295505050565b600060208284031215614be6578081fd5b5051919050565b600080600060608486031215614c01578081fd5b833592506020840135614c13816156a3565b929592945050506040919091013590565b600080600060408486031215614c38578081fd5b83359250602084013567ffffffffffffffff811115614c55578182fd5b614c61868287016145e7565b9497909650939450505050565b600080600080600060808688031215614c85578283fd5b85359450602086013567ffffffffffffffff811115614ca2578384fd5b614cae888289016145e7565b9095509350506040860135614cc2816156a3565b949793965091946060013592915050565b60008060408385031215614ce5578182fd5b505080516020909101519092909150565b60008060008060008060a08789031215614d0e578384fd5b8635955060208701359450604087013567ffffffffffffffff811115614d32578485fd5b614d3e89828a016145e7565b9095509350506060870135614d52816156a3565b80925050608087013590509295509295509295565b600080600060608486031215614d7b578081fd5b505081359360208301359350604090920135919050565b7fffffffffffffffffffffffffffffffffffffffff000000000000000000000000606093841b811682529190921b16601482015260280190565b60008251614dde818460208701615677565b9190910192915050565b7fff00000000000000000000000000000000000000000000000000000000000000815260609290921b7fffffffffffffffffffffffffffffffffffffffff00000000000000000000000016600183015260158201527fbaeae6b526d52ab9edea88a8a5991ed61443a0c4d6bea03dc99971664961f4b7603582015260550190565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff97881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b73ffffffffffffffffffffffffffffffffffffffff92831681529116602082015260400190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b6020808252825182820181905260009190848201906040850190845b81811015614fc557835183529284019291840191600101614fa9565b50909695505050505050565b60208082526015908201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604082015260600190565b6020808252601f908201527f5472616e7366657248656c7065723a205452414e534645525f4641494c454400604082015260600190565b6020808252601a908201527f466553776170526f757465723a20494e56414c49445f50415448000000000000604082015260600190565b60208082526015908201527f466553776170526f757465723a20455850495245440000000000000000000000604082015260600190565b60208082526013908201527f4665537761703a204e4f5420414c4c4f57454400000000000000000000000000604082015260600190565b60208082526014908201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526025908201527f4665537761704c6962726172793a20494e53554646494349454e545f4c49515560408201527f4944495459000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604082015260600190565b60208082526028908201527f4665537761704c6962726172793a20494e53554646494349454e545f494e505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526028908201527f466553776170526f757465723a20494e53554646494349454e545f4f5554505560408201527f545f414d4f554e54000000000000000000000000000000000000000000000000606082015260800190565b60208082526022908201527f4665537761704c6962726172793a20494e53554646494349454e545f414d4f5560408201527f4e54000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252601b908201527f4665537761704c6962726172793a20494e56414c49445f504154480000000000604082015260600190565b60208082526024908201527f466553776170526f757465723a204558434553534956455f494e5055545f414d60408201527f4f554e5400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f4665537761703a204e4f5420544f4b454e204f574e4552000000000000000000604082015260600190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f425f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526011908201527f4665537761703a20524154494f20454552000000000000000000000000000000604082015260600190565b60208082526023908201527f5472616e7366657248656c7065723a204554485f5452414e534645525f46414960408201527f4c45440000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526029908201527f4665537761704c6962726172793a20494e53554646494349454e545f4f55545060408201527f55545f414d4f554e540000000000000000000000000000000000000000000000606082015260800190565b60208082526023908201527f466553776170526f757465723a20494e53554646494349454e545f415f414d4f60408201527f554e540000000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526024908201527f5472616e7366657248656c7065723a205452414e534645525f46524f4d5f464160408201527f494c454400000000000000000000000000000000000000000000000000000000606082015260800190565b60208082526013908201527f4665537761703a204e4f54204352454154454400000000000000000000000000604082015260600190565b90815260200190565b600084825273ffffffffffffffffffffffffffffffffffffffff8416602083015260606040830152825180606084015261561a816080850160208701615677565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01691909101608001949350505050565b918252602082015260400190565b93845260208401929092526040830152606082015260800190565b60005b8381101561569257818101518382015260200161567a565b838111156135d35750506000910152565b73ffffffffffffffffffffffffffffffffffffffff811681146156c557600080fd5b50565b80151581146156c557600080fd5b6dffffffffffffffffffffffffffff811681146156c557600080fdfea264697066735822122041f4b4957e4772e5653c3c9221462bccc6b173672ddcc040d0b30600931cbb8764736f6c634300060c0033",
      "srcmap": "976:20304:3:-:0;;;1328:162;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1;;;;;;1410:18:3;;;;;;;;1439:20;;;;;;;1470:12;;;;;;976:20304;;146:535:-1;;;;295:2;283:9;274:7;270:23;266:32;263:2;;;-1:-1;;301:12;263:2;89:6;83:13;101:33;128:5;101:33;:::i;:::-;464:2;514:22;;83:13;353:74;;-1:-1;101:33;83:13;101:33;:::i;:::-;583:2;633:22;;83:13;472:74;;-1:-1;101:33;83:13;101:33;:::i;:::-;591:74;;;;257:424;;;;;:::o;914:117::-;-1:-1;;;;;848:54;;973:35;;963:2;;1022:1;;1012:12;963:2;957:74;:::o;:::-;976:20304:3;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "976:20304:3:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1543:10;:18;1557:4;1543:18;;1536:26;;;;976:20304;;;;;20322:231;;;;;;;;;;-1:-1:-1;20322:231:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15128:792;;;;;;;;;;-1:-1:-1;15128:792:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;8865:743::-;;;;;;;;;;-1:-1:-1;8865:743:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;21041:234::-;;;;;;;;;;-1:-1:-1;21041:234:3;;;;;:::i;:::-;;:::i;12469:598::-;;;;;;;;;;-1:-1:-1;12469:598:3;;;;;:::i;:::-;;:::i;17744:682::-;;;;;;;;;;-1:-1:-1;17744:682:3;;;;;:::i;:::-;;:::i;14350:770::-;;;;;;;;;;-1:-1:-1;14350:770:3;;;;;:::i;:::-;;:::i;11153:657::-;;;;;;;;;;-1:-1:-1;11153:657:3;;;;;:::i;:::-;;:::i;1668:664::-;;;;;;;;;;-1:-1:-1;1668:664:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;13658:684::-;;;;;;:::i;:::-;;:::i;20561:230::-;;;;;;;;;;-1:-1:-1;20561:230:3;;;;;:::i;:::-;;:::i;13075:575::-;;;;;;;;;;-1:-1:-1;13075:575:3;;;;;:::i;:::-;;:::i;10382:765::-;;;;;;;;;;-1:-1:-1;10382:765:3;;;;;:::i;:::-;;:::i;6937:1175::-;;;;;;;;;;-1:-1:-1;6937:1175:3;;;;;:::i;:::-;;:::i;19253:808::-;;;;;;;;;;-1:-1:-1;19253:808:3;;;;;:::i;:::-;;:::i;1150:38::-;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;20105:209::-;;;;;;;;;;-1:-1:-1;20105:209:3;;;;;:::i;:::-;;:::i;8118:741::-;;;;;;;;;;-1:-1:-1;8118:741:3;;;;;:::i;:::-;;:::i;3493:1666::-;;;;;;;;;;-1:-1:-1;3493:1666:3;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;:::i;1053:41::-;;;;;;;;;;;;;:::i;18432:815::-;;;;;;:::i;:::-;;:::i;9614:695::-;;;;;;;;;;-1:-1:-1;9614:695:3;;;;;:::i;:::-;;:::i;1101:42::-;;;;;;;;;;;;;:::i;20799:234::-;;;;;;;;;;-1:-1:-1;20799:234:3;;;;;:::i;:::-;;:::i;15928:767::-;;;;;;:::i;:::-;;:::i;5167:1727::-;;;;;;:::i;:::-;;:::i;20322:231::-;20447:14;20486:59;20513:8;20523:9;20534:10;20486:26;:59::i;:::-;20479:66;20322:231;-1:-1:-1;;;;20322:231:3:o;15128:792::-;15315:21;15287:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;;;;;;;;;15362:29:::1;15387:4;15362:29;:4:::0;;15367:15;;;15362:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;15354:68;;;;;;;;;;;;:::i;:::-;15433:18;15486:52;15514:7;15523:8;15533:4;;15486:27;:52::i;:::-;15462:76;;;;;;;;15588:12;15557:7;15582:1;15565:7;:14;:18;15557:27;;;;;;;;;;;;;;:43;;15549:96;;;;;;;;;;;;:::i;:::-;15656:76;15688:4;;15693:1;15688:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;15697:10;15709;15721:7;15729:1;15721:10;;;;;;;;;;;;;;15656:31;:76::i;:::-;15743:35;15749:7;15758:4;;15743:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;15772:4:3::1;::::0;-1:-1:-1;15743:5:3::1;::::0;-1:-1:-1;;15743:35:3:i:1;:::-;15795:4;15789:20;;;15810:7;15835:1;15818:7;:14;:18;15810:27;;;;;;;;;;;;;;15789:49;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;15849:63;15880:2;15884:7;15909:1;15892:7;:14;:18;15884:27;;;;;;;;;;;;;;15849:30;:63::i;:::-;1311:1;15128:792:::0;;;;;;;;;:::o;8865:743::-;9174:12;9188;9247:15;9265:46;9287:7;9296:6;9304;9265:21;:46::i;:::-;9247:64;;9326:10;9339;:36;;9363:12;9339:36;;;9357:2;9339:36;9391:80;;;;;9326:49;;-1:-1:-1;9391:27:3;;;;;;:80;;9419:10;;9439:4;;9326:49;;9453:8;;9463:1;;9466;;9469;;9391:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8865:743;;9514:86;9530:6;9538;9546:12;9560:1;9563:10;9575;9587:2;9591:8;9514:15;:86::i;:::-;9493:107;;;;-1:-1:-1;8865:743:3;-1:-1:-1;;;;;;;;;;;;8865:743:3:o;21041:234::-;21164:21;21210:57;21242:7;21251:9;21262:4;;21210:31;:57::i;12469:598::-;12693:21;12674:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;12727:17:::1;12778:52;12806:7;12815:8;12825:4;;12778:27;:52::i;:::-;12755:75;;;;;;;;12880:12;12849:7;12874:1;12857:7;:14;:18;12849:27;;;;;;;;;;;;;;:43;;12841:96;;;;;;;;;;;;:::i;:::-;12948:76;12980:4;;12985:1;12980:7;;;;;;12948:76;13035:24;13041:7;13050:4;;13035:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;13056:2:3;;-1:-1:-1;13035:5:3::1;::::0;-1:-1:-1;;13035:24:3:i:1;17744:682::-:0;17962:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;17983:136:::1;18029:4;;18034:1;18029:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;18038:10;18050:48;18072:7;18081:4;;18086:1;18081:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;18090:4;;18095:1;18090:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;18050:21;:48::i;:::-;18100:8;17983:31;:136::i;:::-;18130:18;18158:4:::0;;18163:15;;;18158:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;18151:39;;;18191:2;18151:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18130:64;;18205:34;18230:4;;18205:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;18236:2:3;;-1:-1:-1;18205:24:3::1;::::0;-1:-1:-1;;18205:34:3:i:1;:::-;18338:12:::0;18272:62:::1;18320:13:::0;18279:4;;18284:15;;;18279:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;18272:39;;;18312:2;18272:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:47:::0;::::1;:62::i;:::-;:78;;18250:168;;;;;;;;;;;;:::i;:::-;1311:1;17744:682:::0;;;;;;;:::o;14350:770::-;14537:21;14509:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;14584:29:::1;14609:4;14584:29;:4:::0;;14589:15;;;14584:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;14576:68;;;;;;;;;;;;:::i;:::-;14655:18;14708:52;14735:7;14744:9;14755:4;;14708:26;:52::i;:::-;14684:76;;;;;;;;14793:11;14779:7;14787:1;14779:10;;;;;;;;;;;;;;:25;;14771:74;;;;;;;;;;;;:::i;11153:657::-:0;11436:14;11463:12;11478:43;11500:7;11509:5;11516:4;11478:21;:43::i;:::-;11463:58;;11532:10;11545;:36;;11569:12;11545:36;;;11563:2;11545:36;11592:77;;;;;11532:49;;-1:-1:-1;11592:24:3;;;;;;:77;;11617:10;;11637:4;;11532:49;;11651:8;;11661:1;;11664;;11667;;11592:77;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11692:110;11738:5;11745:12;11759;11773:1;11776;11779:2;11783:8;11692:31;:110::i;:::-;11680:122;11153:657;-1:-1:-1;;;;;;;;;;;;11153:657:3:o;1668:664::-;1823:15;1840;1875:16;1893:27;;:::i;:::-;1924:40;;;;;:31;1934:8;1924:31;;;;:40;;1956:7;;1924:40;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1874:90;;-1:-1:-1;1874:90:3;-1:-1:-1;1983:10:3;:22;;;;1975:58;;;;;;;;;;;;:::i;:::-;2076:27;2052:10;:20;;;:51;;;;;;;;;;2044:83;;;;;;;;;;;;:::i;:::-;2174:17;;2193;;;;2243:80;;;;;:40;2258:7;2243:40;;;;:80;;2174:17;;2193;;2300:9;;2311:11;;2243:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2222:101;;;;-1:-1:-1;1668:664:3;-1:-1:-1;;;;;;;;1668:664:3:o;13658:684::-;13838:21;13810:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;13896:4:::1;13885:15;;:4;;13890:1;13885:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;:15;;;13877:54;;;;;;;;;;;;:::i;:::-;13942:18;13995:53;14023:7;14032:9;14043:4;;13995:27;:53::i;:::-;13971:77;;;;;;;;14128:12;14097:7;14122:1;14105:7;:14;:18;14097:27;;;;;;;;;;;;;;:43;;14089:96;;;;;;;;;;;;:::i;:::-;14202:4;14196:19;;;14223:7;14231:1;14223:10;;;;;;;;;;;;;;14196:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;14260:4;14254:20;;;14275:10;14287:7;14295:1;14287:10;;;;;;;;;;;;;;14254:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14247:52;;;;14310:24;14316:7;14325:4;;14310:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;14331:2:3;;-1:-1:-1;14310:5:3::1;::::0;-1:-1:-1;;14310:24:3:i:1;:::-;1311:1;13658:684:::0;;;;;;;;:::o;20561:230::-;20686:13;20724:59;20750:9;20761;20772:10;20724:25;:59::i;13075:575::-;13299:21;13280:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;13333:17:::1;13384:52;13411:7;13420:9;13431:4;;13384:26;:52::i;:::-;13361:75;;;;;;;;13469:11;13455:7;13463:1;13455:10;;;;;;;;;;;;;;:25;;13447:74;;;;;;;;;;;;:::i;10382:765::-:0;10671:14;10652:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;10714:238:::1;10744:5;10764:4;10783:12;10810;10849:14;10878:12;10913:4;10933:8;10714:15;:238::i;:::-;11002:38;::::0;;;;10698:254;;-1:-1:-1;10963:78:3::1;::::0;-1:-1:-1;10991:5:3;;10998:2;;11002:23:::1;::::0;::::1;::::0;::::1;::::0;:38:::1;::::0;11034:4:::1;::::0;11002:38:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10963:27;:78::i;:::-;11052:31;::::0;;;;:20:::1;11058:4;11052:20;::::0;::::1;::::0;:31:::1;::::0;11073:9;;11052:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11094:45;11125:2;11129:9;11094:30;:45::i;:::-;10382:765:::0;;;;;;;;;;:::o;6937:1175::-;7230:12;7244;7211:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;7272:23;;7269:293:::1;;7312:15;7330:46;7352:7;7361:6;7369;7330:21;:46::i;:::-;7391:68;::::0;;;;7312:64;;-1:-1:-1;7391:33:3::1;::::0;::::1;::::0;::::1;::::0;:68:::1;::::0;7425:10:::1;::::0;7312:64;;7446:12;;7391:68:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;-1:-1:-1::0;7521:29:3::1;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;7547:2;;7521:29:::1;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7500:50:::0;;-1:-1:-1;7500:50:3;-1:-1:-1;;7269:293:3::1;7575:23:::0;;7572:373:::1;;7615:15;7633:46;7655:7;7664:6;7672;7633:21;:46::i;:::-;7694:68;::::0;;;;7615:64;;-1:-1:-1;7694:33:3::1;::::0;::::1;::::0;::::1;::::0;:68:::1;::::0;7728:10:::1;::::0;7615:64;;7749:12;;7694:68:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7804:13;7819::::0;7848:7:::1;7836:25;;;7862:2;7836:29;;;;;;;;;;;;;;;:::i;:::-;;::::0;::::1;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7880:19:::0;;;::::1;::::0;7914;;;::::1;::::0;-1:-1:-1;;;7572:373:3::1;7974:10;7963:7;:21;;7955:69;;;;;;;;;;;;:::i;:::-;8054:10;8043:7;:21;;8035:69;;;;;;;;;;;;:::i;:::-;6937:1175:::0;;;;;;;;;;;;:::o;19253:808::-;19504:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;19538:29:::1;19563:4;19538:29;:4:::0;;19543:15;;;19538:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;:29;;;19530:68;;;;;;;;;;;;:::i;:::-;19609:136;19655:4;;19660:1;19655:7;;;;;;19609:136;19756:45;19781:4;;19756:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;19795:4:3::1;::::0;-1:-1:-1;19756:24:3::1;::::0;-1:-1:-1;;19756:45:3:i:1;:::-;19829:37;::::0;;;;19812:14:::1;::::0;19829:22:::1;19836:4;19829:22;::::0;::::1;::::0;:37:::1;::::0;19860:4:::1;::::0;19829:37:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;19812:54;;19898:12;19885:9;:25;;19877:78;;;;;;;;;;;;:::i;:::-;19966:31;::::0;;;;:20:::1;19972:4;19966:20;::::0;::::1;::::0;:31:::1;::::0;19987:9;;19966:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20008:45;20039:2;20043:9;20008:30;:45::i;1150:38::-:0;;;:::o;20105:209::-;20220:12;20258:48;20278:7;20287:8;20297;20258:19;:48::i;8118:741::-;8393:16;8411:14;8374:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;8465:226:::1;8495:5;8515:4;8534:12;8561;8588:14;8617:12;8652:4;8672:8;8465:15;:226::i;:::-;8438:253:::0;;-1:-1:-1;8438:253:3;-1:-1:-1;8702:51:3::1;8730:5:::0;8737:2;8438:253;8702:27:::1;:51::i;:::-;8764:31;::::0;;;;:20:::1;8770:4;8764:20;::::0;::::1;::::0;:31:::1;::::0;8785:9;;8764:31:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;8806:45;8837:2;8841:9;8806:30;:45::i;:::-;8118:741:::0;;;;;;;;;;;:::o;3493:1666::-;3778:12;3792;3806:17;3825;3741:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;3877:3:::1;3868:5;:12;;3860:43;;;;;;;;;;;;:::i;:::-;3917:16:::0;;3914:595:::1;;4034:15;4105:3;4079:25;:14:::0;4098:5;4079:18:::1;:25::i;:::-;:29;;;;;;::::0;-1:-1:-1;4165:3:3::1;4139:25;:14:::0;4158:5;4139:18:::1;:25::i;:::-;:29;;;;;;4124:44;;4213:57;4227:6;4235;4243:12;4257;4213:13;:57::i;:::-;4183:87:::0;;-1:-1:-1;4183:87:3;-1:-1:-1;4183:87:3;-1:-1:-1;4285:69:3::1;4317:6:::0;4325:10:::1;4183:87:::0;;4285:31:::1;:69::i;:::-;4369;4401:6;4409:10;4421:7;4430;4369:31;:69::i;:::-;4468:29;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;4494:2;;4468:29:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4453:44;;3914:595;;4536:3;4522:5;:18;4519:633;;4645:15;4742:77;4756:6;4764;4787:7;4772:14;:22;4811:7;4796:14;:22;4742:13;:77::i;:::-;4676:143:::0;;-1:-1:-1;4676:143:3;;-1:-1:-1;4676:143:3;-1:-1:-1;4834:76:3::1;4866:6:::0;4874:10:::1;4676:143:::0;;4834:31:::1;:76::i;:::-;4925;4957:6;4965:10;4977:7;4986:14;4925:31;:76::i;:::-;5031:29;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;5057:2;;5031:29:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5075:25:::0;;::::1;::::0;5115;;::::1;::::0;5016:44;-1:-1:-1;;4519:633:3::1;3493:1666:::0;;;;;;;;;;;;;:::o;1053:41::-;;;:::o;18432:815::-;18676:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;18721:4:::1;18710:15;;:4;;18715:1;18710:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;:15;;;18702:54;;;;;;;;;;;;:::i;:::-;18767:13;18783:9;18767:25;;18809:4;18803:19;;;18830:8;18803:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;18865:4;18859:20;;;18880:48;18902:7;18911:4;;18916:1;18911:7;;;;;;18880:48;18930:8;18859:80;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18852:88;;;;18951:18;18979:4:::0;;18984:15;;;18979:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;18972:39;;;19012:2;18972:43;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18951:64;;19026:34;19051:4;;19026:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;19057:2:3;;-1:-1:-1;19026:24:3::1;::::0;-1:-1:-1;;19026:34:3:i:1;:::-;19159:12:::0;19093:62:::1;19141:13:::0;19100:4;;19105:15;;;19100:21;;::::1;;;;;;;;;;;;;;;;;;:::i;:::-;19093:39;;;19133:2;19093:43;;;;;;;;;;;;;;;:::i;9614:695::-:0;9920:16;9938:14;9965:15;9983:43;10005:7;10014:5;10021:4;9983:21;:43::i;:::-;9965:61;;10037:10;10050;:36;;10074:12;10050:36;;;10068:2;10050:36;10097:80;;;;;10037:49;;-1:-1:-1;10097:27:3;;;;;;:80;;10125:10;;10145:4;;10037:49;;10159:8;;10169:1;;10172;;10175;;10097:80;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10215:86;10234:5;10241:12;10255:1;10258:14;10274:12;10288:2;10292:8;10215:18;:86::i;:::-;10188:113;;;;-1:-1:-1;9614:695:3;-1:-1:-1;;;;;;;;;;;;;9614:695:3:o;1101:42::-;;;:::o;20799:234::-;20922:21;20968:57;21001:7;21010:8;21020:4;;20968:32;:57::i;15928:767::-;16105:21;16077:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;16163:4:::1;16152:15;;:4;;16157:1;16152:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;:15;;;16144:54;;;;;;;;;;;;:::i;:::-;16209:18;16262:52;16289:7;16298:9;16309:4;;16262:26;:52::i;:::-;16238:76;;;;;;;;16347:9;16333:7;16341:1;16333:10;;;;;;;;;;;;;;:23;;16325:72;;;;;;;;;;;;:::i;:::-;16414:4;16408:19;;;16435:7;16443:1;16435:10;;;;;;;;;;;;;;16408:40;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;16472:4;16466:20;;;16487:10;16499:7;16507:1;16499:10;;;;;;;;;;;;;;16466:44;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16459:52;;;;16522:24;16528:7;16537:4;;16522:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;::::0;;;;-1:-1:-1;16543:2:3;;-1:-1:-1;16522:5:3::1;::::0;-1:-1:-1;;16522:24:3:i:1;:::-;16609:7;16617:1;16609:10;;;;;;;;;;;;;;16597:9;:22;16593:94;;;16621:66;16652:10;16676:7;16684:1;16676:10;;;;;;;;;;;;;;16664:9;:22;16621:30;:66::i;5167:1727::-:0;5371:16;5389:14;5405:17;5424;5334:8;1259:15;1247:8;:27;;1239:61;;;;;;;;;;;;:::i;:::-;5477:3:::1;5468:5;:12;;5460:43;;;;;;;;;;;;:::i;:::-;5517:16:::0;;5514:493:::1;;5558:15;5645:87;5659:5:::0;5666:4:::1;5702:3;5672:29;:18:::0;5695:5;5672:22:::1;:29::i;:::-;:33;;;;;;5728:3;5707:20;:9;5721:5:::0;5707:13:::1;:20::i;:::-;:24;;;;;;5645:13;:87::i;:::-;5588:144:::0;;-1:-1:-1;5588:144:3;-1:-1:-1;5588:144:3;-1:-1:-1;5747:72:3::1;5779:5:::0;5786:10:::1;5588:144:::0;;5747:31:::1;:72::i;:::-;5840:4;5834:19;;;5861:9;5834:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;5895:40:3::1;::::0;;;;:20:::1;5901:4;5895:20;::::0;-1:-1:-1;5895:20:3::1;::::0;-1:-1:-1;5895:40:3::1;::::0;-1:-1:-1;5916:7:3;;5925:9;;5895:40:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5888:48;;;;5966:29;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;5992:2;;5966:29:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5951:44;;5514:493;;6034:3;6020:5;:18;6017:729;;6054:15;6084:21:::0;6266:80:::1;6280:4;6286:5;6303:9;6293;:19;6334:11;6315:18;:30;6266:13;:80::i;:::-;6194:152:::0;;-1:-1:-1;6194:152:3;-1:-1:-1;6194:152:3;-1:-1:-1;6361:79:3::1;6393:5:::0;6400:10:::1;6194:152:::0;;6361:31:::1;:79::i;:::-;6461:4;6455:19;;;6482:16;6455:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;;6523:47:3::1;::::0;;;;:20:::1;6529:4;6523:20;::::0;-1:-1:-1;6523:20:3::1;::::0;-1:-1:-1;6523:47:3::1;::::0;-1:-1:-1;6544:7:3;;6553:16;;6523:47:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6516:55;;;;6601:29;::::0;;;;:25:::1;::::0;::::1;::::0;::::1;::::0;:29:::1;::::0;6627:2;;6601:29:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6650:33:::0;;::::1;::::0;6698:29;::::1;::::0;6586:44;-1:-1:-1;;6017:729:3::1;6810:9;6798;:21;6794:92;;;6821:65;6852:10;6876:9;6864;:21;6821:30;:65::i;:::-;5167:1727:::0;;;;;;;;;;;:::o;1724:436:13:-;1817:14;1863:1;1852:8;:12;1844:65;;;;;;;;;;;;:::i;:::-;1940:1;1928:9;:13;:31;;;;;1958:1;1945:10;:14;1928:31;1920:81;;;;;;;;;;;;:::i;:::-;2012:14;2029:24;:8;2042:10;2029:12;:24::i;:::-;2012:41;-1:-1:-1;2064:16:13;2083:23;:9;2097:8;2083:13;:23::i;:::-;2064:42;;2141:11;2129:9;:23;;;;;;;1724:436;-1:-1:-1;;;;;;1724:436:13:o;4101:606::-;4199:17;4218:21;4275:1;4260:16;;;4252:56;;;;;;;;;;;;:::i;:::-;4340:4;4329:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;4329:23:13;;4319:33;;4376:8;4363:7;4371:1;4363:10;;;;;;;;;;;;;:21;;;;;4400:6;4395:305;4416:15;;;4412:19;;4395:305;;;4454:14;4470:15;4487:18;4509:49;4528:7;4537:4;;4542:1;4537:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;4546:4;;4551:1;4555;4551:5;4546:11;;;;;;;;;;;;;;;;;;;;:::i;:::-;4509:18;:49::i;:::-;4453:105;;;;;;4590:47;4603:7;4611:1;4603:10;;;;;;;;;;;;;;4615:9;4626:10;4590:12;:47::i;:::-;4573:7;4581:1;4585;4581:5;4573:14;;;;;;;;;;;;;;;;;:64;4657:6;4652:36;;4678:10;4666:22;;4652:36;-1:-1:-1;;;4433:3:13;;4395:305;;;;4101:606;;;;;;;:::o;944:402:18:-;1123:12;1137:17;1158:5;:10;;1192;1204:4;1210:2;1214:5;1169:51;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1158:63;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1122:99;;;;1240:7;:57;;;;-1:-1:-1;1252:11:18;;:16;;:44;;;1283:4;1272:24;;;;;;;;;;;;:::i;:::-;1232:106;;;;;;;;;;;;:::i;:::-;944:402;;;;;;:::o;11923:538:3:-;12030:6;12025:429;12060:1;12046:4;:11;:15;12042:1;:19;12025:429;;;12084:18;12104:19;12128:4;12133:1;12128:7;;;;;;;;;;;;;;12137:4;12142:1;12146;12142:5;12137:11;;;;;;;;;;;;;;12083:66;;;;12164:14;12181:7;12189:1;12193;12189:5;12181:14;;;;;;;;;;;;;;12164:31;;12210:10;12241:1;12227:4;:11;:15;12223:1;:19;:84;;12304:3;12223:84;;;12245:56;12267:7;12276:11;12289:4;12294:1;12298;12294:5;12289:11;;;;;;;;;;;;;;12245:21;:56::i;:::-;12210:97;;12334:55;12356:7;12365:10;12377:11;12334:21;:55::i;:::-;12429:12;;;12439:1;12429:12;;;;;;;;;12322:120;;;;:91;;;;;;;;:120;;12414:9;;12425:2;;12322:120;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12063:3:3;;;;;-1:-1:-1;12025:429:3;;-1:-1:-1;;;;;12025:429:3;;;11923:538;;;:::o;1354:195:18:-;1462:12;;;1424;1462;;;;;;;;;1441:7;;;;1455:5;;1441:34;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1423:52;;;1494:7;1486:55;;;;;;;;;;;;:::i;:::-;1354:195;;;:::o;357:422:13:-;446:12;561:7;614:6;622;597:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;587:43;;;;;;500:268;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;490:279;;500:268;490:279;;;;;357:422;-1:-1:-1;;;;357:422:13:o;6011:539::-;6119:21;6176:1;6161:16;;;6153:56;;;;;;;;;;;;:::i;:::-;6241:4;6230:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;6230:23:13;;6220:33;;6294:9;6264:7;6289:1;6272:7;:14;:18;6264:27;;;;;;;;;;;;;;;;;:39;6328:15;;;6314:229;6345:5;;6314:229;;6373:14;6389:15;6411:42;6423:7;6432:4;;6441:1;6437;:5;6432:11;;;;;;;;;;;;;;;;;;;;:::i;:::-;6445:4;;6450:1;6445:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;6411:11;:42::i;:::-;6372:81;;;;;;6485:46;6497:7;6505:1;6497:10;;;;;;;;;;;;;;6509:9;6520:10;6485:11;:46::i;:::-;6468:7;6480:1;6476;:5;6468:14;;;;;;;;;;;;;;;;;:63;-1:-1:-1;;6352:3:13;;6314:229;;;;6011:539;;;;;;:::o;16842:894:3:-;16945:6;16940:789;16975:1;16961:4;:11;:15;16957:1;:19;16940:789;;;16999:13;17014:14;17033:4;17038:1;17033:7;;;;;;;;;;;;;;17042:4;17047:1;17051;17047:5;17042:11;;;;;;;;;;;;;;16998:56;;;;17069:16;17100:45;17122:7;17131:5;17138:6;17100:21;:45::i;:::-;17069:77;;17161:16;17192:17;17286;17305:18;17330:4;:16;;;:18;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17285:63;;;;;;;;;;17381:56;17424:12;17388:5;17381:23;;;17413:4;17381:38;;;;;;;;;;;;;;;:::i;:56::-;17367:70;;17471:68;17498:11;17511:12;17525:13;17471:26;:68::i;:::-;17456:83;;16940:789;;17569:10;17600:1;17586:4;:11;:15;17582:1;:19;:79;;17658:3;17582:79;;;17604:51;17626:7;17635:6;17643:4;17648:1;17652;17648:5;17643:11;;;;;;;17604:51;17704:12;;;17714:1;17704:12;;;;;;;;;17676:41;;;;17569:92;;-1:-1:-1;17676:9:3;;;;;;:41;;17686:12;;17569:92;;17676:41;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16978:3:3;;;;;-1:-1:-1;16940:789:3;;-1:-1:-1;;;;;;;16940:789:3;333:129:17;417:5;;;412:16;;;;404:50;;;;;;;;;;;;:::i;:::-;333:129;;;;:::o;5399:604:13:-;5497:17;5516:21;5573:1;5558:16;;;5550:56;;;;;;;;;;;;:::i;:::-;5638:4;5627:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5627:23:13;;5617:33;;5691:9;5661:7;5686:1;5669:7;:14;:18;5661:27;;;;;;;;;;;;;;;;;:39;5711:14;;5776:15;;;5762:234;5793:5;;5762:234;;5857:49;5876:7;5885:4;;5894:1;5890;:5;5885:11;;;;;;;;;;;;;;;;;;;;:::i;:::-;5898:4;;5903:1;5898:7;;;;;;5857:49;5950:10;;5820:86;;-1:-1:-1;5820:86:13;;-1:-1:-1;5820:86:13;-1:-1:-1;5938:46:13;;5950:7;;5958:1;;5950:10;;;;;;;;;;;;5962:9;5973:10;5938:11;:46::i;:::-;5921:7;5933:1;5929;:5;5921:14;;;;;;;;;;;;;;;;;:63;5800:3;;5762:234;;;;5399:604;;;;;;;;;:::o;2281:513::-;2374:13;2420:1;2408:9;:13;2400:67;;;;;;;;;;;;:::i;:::-;2498:1;2486:9;:13;:31;;;;;2516:1;2503:10;:14;2486:31;2478:81;;;;;;;;;;;;:::i;:::-;2570:14;2587:24;:9;2601;2587:13;:24::i;:::-;2570:41;-1:-1:-1;2622:16:13;2641:25;:10;2656:9;2641:14;:25::i;:::-;2622:44;-1:-1:-1;2622:44:13;2745:26;:9;2622:44;2745:13;:26::i;:::-;2744:42;;;;575:361:18;724:12;738:17;759:5;:10;;793;805:2;809:5;770:45;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;759:57;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;723:93;;;;835:7;:57;;;;-1:-1:-1;847:11:18;;:16;;:44;;;878:4;867:24;;;;;;;;;;;;:::i;:::-;827:101;;;;;;;;;;;;:::i;:::-;575:361;;;;;:::o;1287:315:13:-;1369:12;1412:1;1402:7;:11;1394:58;;;;;;;;;;;;:::i;:::-;1482:1;1471:8;:12;:28;;;;;1498:1;1487:8;:12;1471:28;1463:78;;;;;;;;;;;;:::i;:::-;1586:8;1562:21;:7;1574:8;1562:11;:21::i;:::-;:32;;;;;;;1287:315;-1:-1:-1;;;;1287:315:13:o;470:142:17:-;522:6;549;;;:30;;-1:-1:-1;;564:5:17;;;578:1;573;564:5;573:1;559:15;;;;;:20;549:30;541:63;;;;;;;;;;;;:::i;2372:1113:3:-;2552:13;2567:14;2583:12;2636:7;2621:31;;;2653:7;2662:8;2621:50;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2614:57;-1:-1:-1;2690:18:3;;;2682:50;;;;;;;;;;;;:::i;:::-;2744:14;2760:15;2794:4;2782:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;2743:70;;;;;;;;;;2828:9;2841:1;2828:14;:33;;;;-1:-1:-1;2846:15:3;;2828:33;2824:654;;;2903:15;;-1:-1:-1;2920:16:3;;-1:-1:-1;2824:654:3;;;2970:21;2994:59;3014:15;3031:9;3042:10;2994:19;:59::i;:::-;2970:83;;3092:16;3072;:36;3068:399;;3154:15;;-1:-1:-1;3171:16:3;-1:-1:-1;3171:16:3;3068:399;;;3229:20;3252:60;3272:16;3290:10;3302:9;3252:19;:60::i;:::-;3229:83;;3357:15;3338;:34;;3331:42;;;;3417:15;-1:-1:-1;3434:16:3;;-1:-1:-1;3068:399:3;2824:654;;2372:1113;;;;;;;;;;:::o;4795:523:13:-;4903:21;4960:1;4945:16;;;4937:56;;;;;;;;;;;;:::i;:::-;5025:4;5014:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;5014:23:13;;5004:33;;5061:8;5048:7;5056:1;5048:10;;;;;;;;;;;;;:21;;;;;5085:6;5080:231;5101:15;;;5097:19;;5080:231;;;5139:14;5155:15;5178:42;5190:7;5199:4;;5204:1;5199:7;;;;;;;;;;;;;;;;;;;;:::i;:::-;5208:4;;5213:1;5217;5213:5;5208:11;;;;;;5178:42;5138:82;;;;;;5252:47;5265:7;5273:1;5265:10;;;;;;;;;;;;;;5277:9;5288:10;5252:12;:47::i;:::-;5235:7;5243:1;5247;5243:5;5235:14;;;;;;;;;;;;;;;;;:64;-1:-1:-1;;5118:3:13;;5080:231;;197:128:17;281:5;;;276:16;;;;268:49;;;;;;;;;;;;:::i;2802:1214:13:-;2897:14;2913:15;2930:12;2989:36;3001:7;3010:6;3018;2989:11;:36::i;:::-;-1:-1:-1;2955:70:13;;-1:-1:-1;2955:70:13;-1:-1:-1;2955:70:13;-1:-1:-1;3037:18:13;;;;3125:50;3151:7;3160:6;3168;3125:25;:50::i;:::-;3036:139;;-1:-1:-1;3036:139:13;;-1:-1:-1;3036:139:13;-1:-1:-1;3036:139:13;-1:-1:-1;3187:14:13;3204:34;3209:9;3036:139;3204:19;:34::i;:::-;3187:51;-1:-1:-1;3249:15:13;3267:36;3272:10;3288:14;3267:20;:36::i;:::-;3249:54;-1:-1:-1;3340:36:13;3249:54;3355:20;3340:14;:36::i;:::-;3317:20;:9;3331:5;3317:13;:20::i;:::-;:59;3314:695;;;3409:18;3430:25;:9;3444:10;3430:13;:25::i;:::-;3409:46;-1:-1:-1;3470:16:13;3489:44;3531:1;3490:35;3495:9;3510:14;3490:19;:35::i;:::-;3489:41;;:44::i;:::-;3470:63;-1:-1:-1;3563:16:13;3582:44;3624:1;3583:35;3588:10;3604:13;3583:20;:35::i;3582:44::-;3563:63;;3641:84;3673:6;3681:4;3687:8;3713:11;3697:13;:27;;;;;;3641:31;:84::i;:::-;3750;3782:6;3790:8;3800:4;3822:11;3806:13;:27;;;;3750:84;3862:4;3850:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3901:8;3889:26;;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;3961:36;3973:7;3982:6;3990;3961:11;:36::i;:::-;-1:-1:-1;3932:65:13;;-1:-1:-1;3932:65:13;-1:-1:-1;;;;;3314:695:13;2802:1214;;;;;;;;;;;;;:::o;837:337::-;956:13;971;986:12;1000:25;1045:32;1053:7;1062:6;1070;1045:7;:32::i;:::-;1038:39;;1147:4;1135:29;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;1088:78;;;;;;;;;;-1:-1:-1;837:337:13;;-1:-1:-1;1088:78:13;;-1:-1:-1;837:337:13;-1:-1:-1;;;;837:337:13:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;142:134::-;220:13;;238:33;220:13;238:33;:::i;301:352::-;;;431:3;424:4;416:6;412:17;408:27;398:2;;-1:-1;;439:12;398:2;-1:-1;469:20;;509:18;498:30;;495:2;;;-1:-1;;531:12;495:2;575:4;567:6;563:17;551:29;;626:3;575:4;;610:6;606:17;567:6;592:32;;589:41;586:2;;;643:1;;633:12;586:2;391:262;;;;;:::o;1064:176::-;1163:13;;49073:1;49063:12;;49053:2;;49089:1;;49079:12;2451:134;2529:13;;46939:30;46928:42;;49164:35;;49154:2;;49213:1;;49203:12;3009:132;3086:13;;47356:18;47345:30;;49533:34;;49523:2;;49581:1;;49571:12;3148:126;3213:20;;47458:4;47447:16;;49654:33;;49644:2;;49701:1;;49691:12;3281:241;;3385:2;3373:9;3364:7;3360:23;3356:32;3353:2;;;-1:-1;;3391:12;3353:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;3443:63;3347:175;-1:-1;;;3347:175::o;3529:263::-;;3644:2;3632:9;3623:7;3619:23;3615:32;3612:2;;;-1:-1;;3650:12;3612:2;226:6;220:13;238:33;265:5;238:33;:::i;3799:399::-;;;3931:2;3919:9;3910:7;3906:23;3902:32;3899:2;;;-1:-1;;3937:12;3899:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;4100:2;4150:22;;220:13;3989:74;;-1:-1;238:33;220:13;238:33;:::i;:::-;4108:74;;;;3893:305;;;;;:::o;4205:995::-;;;;;;;;4411:3;4399:9;4390:7;4386:23;4382:33;4379:2;;;-1:-1;;4418:12;4379:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;4470:63;-1:-1;4570:2;4609:22;;72:20;97:33;72:20;97:33;:::i;:::-;4578:63;-1:-1;4678:2;4717:22;;2659:20;;-1:-1;4786:2;4825:22;;2659:20;;-1:-1;4894:3;4934:22;;2659:20;;-1:-1;5003:3;5043:22;;72:20;97:33;72:20;97:33;:::i;:::-;5012:63;;;;5112:3;5156:9;5152:22;2659:20;5121:63;;4373:827;;;;;;;;;;:::o;5207:1491::-;;;;;;;;;;;;5477:3;5465:9;5456:7;5452:23;5448:33;5445:2;;;-1:-1;;5484:12;5445:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;5536:63;-1:-1;5636:2;5675:22;;72:20;97:33;72:20;97:33;:::i;:::-;5644:63;-1:-1;5744:2;5783:22;;2659:20;;-1:-1;5852:2;5891:22;;2659:20;;-1:-1;5960:3;6000:22;;2659:20;;-1:-1;6069:3;6109:22;;72:20;97:33;72:20;97:33;:::i;:::-;6078:63;-1:-1;6178:3;6218:22;;2659:20;;-1:-1;6287:3;6324:22;;725:20;750:30;725:20;750:30;:::i;:::-;6296:60;-1:-1;6412:51;6455:7;6393:3;6431:22;;6412:51;:::i;:::-;6402:61;;6500:3;6544:9;6540:22;994:20;6509:63;;6609:3;6654:9;6650:22;994:20;6618:64;;5439:1259;;;;;;;;;;;;;;:::o;6705:1121::-;;;;;;;;;6928:3;6916:9;6907:7;6903:23;6899:33;6896:2;;;-1:-1;;6935:12;6896:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;6987:63;-1:-1;7087:2;7126:22;;72:20;97:33;72:20;97:33;:::i;:::-;7095:63;-1:-1;7195:2;7234:22;;2659:20;;-1:-1;7303:2;7342:22;;2659:20;;-1:-1;7411:3;7451:22;;2659:20;;-1:-1;7520:3;7560:22;;2659:20;;-1:-1;7629:3;7669:22;;72:20;97:33;72:20;97:33;:::i;:::-;7638:63;;;;7738:3;7782:9;7778:22;2659:20;7747:63;;6890:936;;;;;;;;;;;:::o;7833:454::-;;;7980:9;7971:7;7967:23;7992:3;7967:23;7963:33;7960:2;;;-1:-1;;7999:12;7960:2;226:6;220:13;238:33;265:5;238:33;:::i;:::-;8051:74;-1:-1;1397:4;1376:19;;;1372:30;1369:2;;;-1:-1;;1405:12;1369:2;;45014;45008:9;1397:4;45044:6;45040:17;45151:6;45139:10;45136:22;45115:18;45103:10;45100:34;45097:62;45094:2;;;-1:-1;;45162:12;45094:2;45014;45181:22;1537:60;1593:3;8162:2;8239:22;;1537:60;:::i;:::-;1519:16;1512:86;1694:60;1750:3;45014:2;8243:9;1726:22;1694:60;:::i;:::-;8162:2;1680:5;1676:16;1669:86;1889:22;8243:9;1889:22;2807:13;45014:2;1843:5;1839:16;1832:86;2019:59;2074:3;2050:22;8243:9;2050:22;2019:59;:::i;:::-;1889:22;2005:5;2001:16;1994:85;2181:59;2236:3;2212:22;8243:9;2212:22;2181:59;:::i;:::-;2050:22;2167:5;2163:16;2156:85;2341:81;2418:3;1397:4;8243:9;2394:22;2341:81;:::i;:::-;2212:22;2327:5;2323:16;2316:107;8170:101;;;;7954:333;;;;;:::o;8294:743::-;;;;;;8466:3;8454:9;8445:7;8441:23;8437:33;8434:2;;;-1:-1;;8473:12;8434:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;8525:63;-1:-1;8625:2;8664:22;;2659:20;;-1:-1;8733:2;8772:22;;2659:20;;-1:-1;8841:2;8880:22;;72:20;97:33;72:20;97:33;:::i;:::-;8428:609;;;;-1:-1;8428:609;;8949:3;8989:22;2659:20;;8428:609;-1:-1;;8428:609::o;9044:1237::-;;;;;;;;;;9279:3;9267:9;9258:7;9254:23;9250:33;9247:2;;;-1:-1;;9286:12;9247:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;9338:63;-1:-1;9438:2;9477:22;;2659:20;;-1:-1;9546:2;9585:22;;2659:20;;-1:-1;9654:2;9693:22;;72:20;97:33;72:20;97:33;:::i;:::-;9662:63;-1:-1;9762:3;9802:22;;2659:20;;-1:-1;9871:3;9908:22;;725:20;750:30;725:20;750:30;:::i;:::-;9880:60;-1:-1;9996:51;10039:7;9977:3;10015:22;;9996:51;:::i;:::-;9986:61;;10084:3;10128:9;10124:22;994:20;10093:63;;10193:3;10237:9;10233:22;994:20;10202:63;;9241:1040;;;;;;;;;;;:::o;10288:1363::-;;;;;;;;;;;10540:3;10528:9;10519:7;10515:23;10511:33;10508:2;;;-1:-1;;10547:12;10508:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;10599:63;-1:-1;10699:2;10738:22;;2659:20;;-1:-1;10807:2;10846:22;;2659:20;;-1:-1;10915:2;10954:22;;2659:20;;-1:-1;11023:3;11063:22;;72:20;97:33;72:20;97:33;:::i;:::-;11032:63;-1:-1;11132:3;11172:22;;2659:20;;-1:-1;11241:3;11278:22;;725:20;750:30;725:20;750:30;:::i;:::-;11250:60;-1:-1;11366:51;11409:7;11347:3;11385:22;;11366:51;:::i;:::-;11356:61;;11454:3;11498:9;11494:22;994:20;11463:63;;11563:3;11607:9;11603:22;994:20;11572:63;;10502:1149;;;;;;;;;;;;;:::o;11658:995::-;;;;;;;;11864:3;11852:9;11843:7;11839:23;11835:33;11832:2;;;-1:-1;;11871:12;11832:2;85:6;72:20;97:33;124:5;97:33;:::i;:::-;11923:63;-1:-1;12023:2;12062:22;;2659:20;;-1:-1;12131:2;12170:22;;2659:20;;-1:-1;12239:2;12278:22;;2659:20;;-1:-1;12347:3;12387:22;;2659:20;;-1:-1;12456:3;12496:22;;72:20;97:33;72:20;97:33;:::i;12660:257::-;;12772:2;12760:9;12751:7;12747:23;12743:32;12740:2;;;-1:-1;;12778:12;12740:2;873:6;867:13;885:30;909:5;885:30;:::i;12924:399::-;;;13056:2;13044:9;13035:7;13031:23;13027:32;13024:2;;;-1:-1;;13062:12;13024:2;2535:6;2529:13;2547:33;2574:5;2547:33;:::i;:::-;13225:2;13275:22;;2529:13;13114:74;;-1:-1;2547:33;2529:13;2547:33;:::i;13330:670::-;;;;;13495:3;13483:9;13474:7;13470:23;13466:33;13463:2;;;-1:-1;;13502:12;13463:2;13564:64;13620:7;13596:22;13564:64;:::i;:::-;13554:74;;13683:64;13739:7;13665:2;13719:9;13715:22;13683:64;:::i;:::-;13673:74;;13784:2;13837:9;13833:22;2947:13;47261:10;49438:5;47250:22;49414:5;49411:34;49401:2;;-1:-1;;49449:12;49401:2;13902;13952:22;;;;2807:13;13457:543;;;;-1:-1;;;13457:543::o;14007:263::-;;14122:2;14110:9;14101:7;14097:23;14093:32;14090:2;;;-1:-1;;14128:12;14090:2;-1:-1;2807:13;;14084:186;-1:-1;14084:186::o;14277:491::-;;;;14415:2;14403:9;14394:7;14390:23;14386:32;14383:2;;;-1:-1;;14421:12;14383:2;2672:6;2659:20;14473:63;;14573:2;14616:9;14612:22;72:20;97:33;124:5;97:33;:::i;:::-;14377:391;;14581:63;;-1:-1;;;14681:2;14720:22;;;;2659:20;;14377:391::o;14775:522::-;;;;14931:2;14919:9;14910:7;14906:23;14902:32;14899:2;;;-1:-1;;14937:12;14899:2;2672:6;2659:20;14989:63;;15117:2;15106:9;15102:18;15089:32;15141:18;15133:6;15130:30;15127:2;;;-1:-1;;15163:12;15127:2;15201:80;15273:7;15264:6;15253:9;15249:22;15201:80;:::i;:::-;14893:404;;15183:98;;-1:-1;15183:98;;-1:-1;;;;14893:404::o;15304:773::-;;;;;;15494:3;15482:9;15473:7;15469:23;15465:33;15462:2;;;-1:-1;;15501:12;15462:2;2672:6;2659:20;15553:63;;15681:2;15670:9;15666:18;15653:32;15705:18;15697:6;15694:30;15691:2;;;-1:-1;;15727:12;15691:2;15765:80;15837:7;15828:6;15817:9;15813:22;15765:80;:::i;:::-;15747:98;;-1:-1;15747:98;-1:-1;;15882:2;15921:22;;72:20;97:33;72:20;97:33;:::i;:::-;15456:621;;;;-1:-1;15456:621;;15990:2;16029:22;2659:20;;15456:621;-1:-1;;15456:621::o;16084:399::-;;;16216:2;16204:9;16195:7;16191:23;16187:32;16184:2;;;-1:-1;;16222:12;16184:2;-1:-1;;2807:13;;16385:2;16435:22;;;2807:13;;;;;-1:-1;16178:305::o;16490:899::-;;;;;;;16697:3;16685:9;16676:7;16672:23;16668:33;16665:2;;;-1:-1;;16704:12;16665:2;2672:6;2659:20;16756:63;;16856:2;16899:9;16895:22;2659:20;16864:63;;16992:2;16981:9;16977:18;16964:32;17016:18;17008:6;17005:30;17002:2;;;-1:-1;;17038:12;17002:2;17076:80;17148:7;17139:6;17128:9;17124:22;17076:80;:::i;:::-;17058:98;;-1:-1;17058:98;-1:-1;;17193:2;17232:22;;72:20;97:33;72:20;97:33;:::i;:::-;17201:63;;;;17301:3;17345:9;17341:22;2659:20;17310:63;;16659:730;;;;;;;;:::o;17396:491::-;;;;17534:2;17522:9;17513:7;17509:23;17505:32;17502:2;;;-1:-1;;17540:12;17502:2;-1:-1;;2659:20;;;17692:2;17731:22;;2659:20;;-1:-1;17800:2;17839:22;;;2659:20;;17496:391;-1:-1;17496:391::o;28857:392::-;48585:14;48589:2;48585:14;;;;;18434:58;;48585:14;;;;;29110:2;29101:12;;18434:58;29212:12;;;29001:248::o;29256:271::-;;20022:5;45476:12;20133:52;20178:6;20173:3;20166:4;20159:5;20155:16;20133:52;:::i;:::-;20197:16;;;;;29390:137;-1:-1;;29390:137::o;29534:926::-;24377:66;24357:87;;48589:2;48585:14;;;;;;24342:1;24463:11;;18434:58;30146:12;;;19304:37;25503:66;30257:12;;;25483:87;25589:12;;;29880:580::o;30467:222::-;47055:42;47044:54;;;;18296:37;;30594:2;30579:18;;30565:124::o;30941:916::-;47055:42;47044:54;;;18155:58;;47044:54;;;;31429:2;31414:18;;18155:58;31512:2;31497:18;;19304:37;;;;31595:2;31580:18;;19304:37;;;;47458:4;47447:16;31674:3;31659:19;;28810:35;31758:3;31743:19;;19304:37;31842:3;31827:19;;19304:37;;;;31248:3;31233:19;;31219:638::o;31864:460::-;47055:42;47044:54;;;18155:58;;47044:54;;;;32227:2;32212:18;;18296:37;32310:2;32295:18;;19304:37;;;;32055:2;32040:18;;32026:298::o;32331:333::-;47055:42;47044:54;;;18296:37;;47044:54;;32650:2;32635:18;;18296:37;32486:2;32471:18;;32457:207::o;32671:556::-;47055:42;47044:54;;;18296:37;;47044:54;;;33047:2;33032:18;;18296:37;47044:54;;33130:2;33115:18;;18296:37;33213:2;33198:18;;19304:37;;;;32882:3;32867:19;;32853:374::o;33685:333::-;47055:42;47044:54;;;;18296:37;;34004:2;33989:18;;19304:37;33840:2;33825:18;;33811:207::o;34025:370::-;34202:2;34216:47;;;45476:12;;34187:18;;;45879:19;;;34025:370;;34202:2;45330:14;;;;45919;;;;34025:370;18943:260;18968:6;18965:1;18962:13;18943:260;;;19029:13;;19304:37;;45734:14;;;;18048;;;;18990:1;18983:9;18943:260;;;-1:-1;34269:116;;34173:222;-1:-1;;;;;;34173:222::o;34402:416::-;34602:2;34616:47;;;20450:2;34587:18;;;45879:19;20486:23;45919:14;;;20466:44;20529:12;;;34573:245::o;34825:416::-;35025:2;35039:47;;;20780:2;35010:18;;;45879:19;20816:33;45919:14;;;20796:54;20869:12;;;34996:245::o;35248:416::-;35448:2;35462:47;;;21120:2;35433:18;;;45879:19;21156:28;45919:14;;;21136:49;21204:12;;;35419:245::o;35671:416::-;35871:2;35885:47;;;21455:2;35856:18;;;45879:19;21491:23;45919:14;;;21471:44;21534:12;;;35842:245::o;36094:416::-;36294:2;36308:47;;;21785:2;36279:18;;;45879:19;21821:21;45919:14;;;21801:42;21862:12;;;36265:245::o;36517:416::-;36717:2;36731:47;;;22113:2;36702:18;;;45879:19;22149:22;45919:14;;;22129:43;22191:12;;;36688:245::o;36940:416::-;37140:2;37154:47;;;22442:2;37125:18;;;45879:19;22478:34;45919:14;;;22458:55;22547:7;22533:12;;;22526:29;22574:12;;;37111:245::o;37363:416::-;37563:2;37577:47;;;22825:2;37548:18;;;45879:19;22861:22;45919:14;;;22841:43;22903:12;;;37534:245::o;37786:416::-;37986:2;38000:47;;;23154:2;37971:18;;;45879:19;23190:34;45919:14;;;23170:55;23259:10;23245:12;;;23238:32;23289:12;;;37957:245::o;38209:416::-;38409:2;38423:47;;;23540:2;38394:18;;;45879:19;23576:34;45919:14;;;23556:55;23645:10;23631:12;;;23624:32;23675:12;;;38380:245::o;38632:416::-;38832:2;38846:47;;;23926:2;38817:18;;;45879:19;23962:34;45919:14;;;23942:55;24031:4;24017:12;;;24010:26;24055:12;;;38803:245::o;39055:416::-;39255:2;39269:47;;;24713:2;39240:18;;;45879:19;24749:29;45919:14;;;24729:50;24798:12;;;39226:245::o;39478:416::-;39678:2;39692:47;;;25049:2;39663:18;;;45879:19;25085:34;45919:14;;;25065:55;25154:6;25140:12;;;25133:28;25180:12;;;39649:245::o;39901:416::-;40101:2;40115:47;;;25840:2;40086:18;;;45879:19;25876:25;45919:14;;;25856:46;25921:12;;;40072:245::o;40324:416::-;40524:2;40538:47;;;26172:2;40509:18;;;45879:19;26208:34;45919:14;;;26188:55;26277:5;26263:12;;;26256:27;26302:12;;;40495:245::o;40747:416::-;40947:2;40961:47;;;26553:2;40932:18;;;45879:19;26589;45919:14;;;26569:40;26628:12;;;40918:245::o;41170:416::-;41370:2;41384:47;;;26879:2;41355:18;;;45879:19;26915:34;45919:14;;;26895:55;26984:5;26970:12;;;26963:27;27009:12;;;41341:245::o;41593:416::-;41793:2;41807:47;;;27260:2;41778:18;;;45879:19;27296:34;45919:14;;;27276:55;27365:11;27351:12;;;27344:33;27396:12;;;41764:245::o;42016:416::-;42216:2;42230:47;;;27647:2;42201:18;;;45879:19;27683:34;45919:14;;;27663:55;27752:5;27738:12;;;27731:27;27777:12;;;42187:245::o;42439:416::-;42639:2;42653:47;;;28028:2;42624:18;;;45879:19;28064:34;45919:14;;;28044:55;28133:6;28119:12;;;28112:28;28159:12;;;42610:245::o;42862:416::-;43062:2;43076:47;;;28410:2;43047:18;;;45879:19;28446:21;45919:14;;;28426:42;28487:12;;;43033:245::o;43285:222::-;19304:37;;;43412:2;43397:18;;43383:124::o;43514:528::-;;19334:5;19311:3;19304:37;47055:42;47048:5;47044:54;43879:2;43868:9;43864:18;18296:37;43715:2;43916;43905:9;43901:18;43894:48;19654:5;45476:12;45891:6;43715:2;43704:9;43700:18;45879:19;19747:52;19792:6;45919:14;43704:9;45919:14;43879:2;19773:5;19769:16;19747:52;:::i;:::-;48498:2;48478:14;48494:7;48474:28;19811:39;;;;45919:14;19811:39;;43686:356;-1:-1;;;;43686:356::o;44049:333::-;19304:37;;;44368:2;44353:18;;19304:37;44204:2;44189:18;;44175:207::o;44389:556::-;19304:37;;;44765:2;44750:18;;19304:37;;;;44848:2;44833:18;;19304:37;44931:2;44916:18;;19304:37;44600:3;44585:19;;44571:374::o;47855:268::-;47920:1;47927:101;47941:6;47938:1;47935:13;47927:101;;;48008:11;;;48002:18;47989:11;;;47982:39;47963:2;47956:10;47927:101;;;48043:6;48040:1;48037:13;48034:2;;;-1:-1;;47920:1;48090:16;;48083:27;47904:219::o;48617:117::-;47055:42;48704:5;47044:54;48679:5;48676:35;48666:2;;48725:1;;48715:12;48666:2;48660:74;:::o;48741:111::-;48822:5;46761:13;46754:21;48800:5;48797:32;48787:2;;48843:1;;48833:12;49105:117;46939:30;49192:5;46928:42;49167:5;49164:35;49154:2;;49213:1;;49203:12"
    },
    "contracts/FeSwapRouter.sol:IFeswaNFT": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "getPoolInfo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "currentPrice",
                  "type": "uint256"
                },
                {
                  "internalType": "uint64",
                  "name": "timeCreated",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "lastBidTime",
                  "type": "uint64"
                },
                {
                  "internalType": "enum PoolRunningPhase",
                  "name": "poolState",
                  "type": "uint8"
                }
              ],
              "internalType": "struct FeswaPair",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "ownerOf",
          "outputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPoolInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timeCreated\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastBidTime\",\"type\":\"uint64\"},{\"internalType\":\"enum PoolRunningPhase\",\"name\":\"poolState\",\"type\":\"uint8\"}],\"internalType\":\"struct FeswaPair\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/FeSwapRouter.sol\":\"IFeswaNFT\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeSwapRouter.sol\":{\"keccak256\":\"0x06ee72b19d93d523ec98ff19586cbe6993ba17e649130b16e805e794d43c66e5\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://6922bc20c8c551d9339fe7ec7aef8570ba884129f032b5abc486a4eeb82daf86\",\"dweb:/ipfs/Qmc48NrtenK4LHYb9ndFBmgqSLvyWTbtoThpktVGb6Fjn6\"]},\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xffa99694f4e4032bb172355a8a945673f2b478dd8beaae2924be031d508840e6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a4797ac84843f2e7390441a1e906f99ae88470b85dbc33986d2b157cbafb879a\",\"dweb:/ipfs/QmSQcCyUgUfwSkqyu9aAAw8LcRjcMFYv7omtYfUWkYKXKQ\"]},\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]},\"contracts/interfaces/IFeSwapFactory.sol\":{\"keccak256\":\"0x6380263efaf08b4bbb55a8441149baa7e350cfb7ef2ab4d7d1b9459048e47d64\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ed8209bcab83952ee61eead083e52e6396b6c8e9b4aa1c4e382f93bef60039d\",\"dweb:/ipfs/QmQuszK4Sw3NKZqvkhN6WYcjmgzzgegvY8a4joxEsJykye\"]},\"contracts/interfaces/IFeSwapPair.sol\":{\"keccak256\":\"0x480046bc17bd6578c1943d7b487ed45183c581625b8abed2b97a48db1220c1d0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3dc34bc6ffcb16588ecd57a6fbe28595f6e2eda02ca13c6864708477bce9afcc\",\"dweb:/ipfs/QmVrkT7MXCc3SqrHaVb1arfndaJGfPeve4Q57Lc34xCChj\"]},\"contracts/interfaces/IFeSwapRouter.sol\":{\"keccak256\":\"0x84067893834807d34b847b315d9438fc4d4acee57496ea58f4be2aa39d904584\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af382f205e3a27ee135677c2be6d7f81f8b4f96beae9fc0e0278a591ec8a8760\",\"dweb:/ipfs/QmYXmiZMNGdiXBeaHhHFiRXpBArBF8XYs5jc3ayH7CJDn2\"]},\"contracts/interfaces/IWETH.sol\":{\"keccak256\":\"0x0880556c10a7ff3b827ea06f998d7bad2961953788582fb8a967f35fce3b6fba\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://42b9d6ad1eca93f92ff7fd9005b4fb58a0b6dfc44fb8c21b6b8e784bf4acaa94\",\"dweb:/ipfs/QmThKrCLx7W7EbKoWjHv7zn5WoWejJQNCFqdo24iP1FdnM\"]},\"contracts/libraries/FeSwapLibrary.sol\":{\"keccak256\":\"0x019dc9f2596d2b1f8271cff0ab70b4e0d8122bc96e4c0f7e70d1c9a3fdb88471\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d3cc44c6c398321e3b7fa7e980eab843db164d7d9c2b9fb53b4ad41a8ed50756\",\"dweb:/ipfs/QmS1jSY14znYL1AnVCGFSUwxMT3p7hEW63SmNxmTuXw2zu\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xf04a5109c9205c67202d408fdf6ce80ec28fcd93702bdba158d88aae5a6573ad\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ee35c811f41747d96f6946388815e9bf4d6c72dd3ddec7f1de3815979f3f415\",\"dweb:/ipfs/QmZFQ9oBd3DyZbzNf7eTesDxjNxyzpyPcxSC8w9RVRpNPM\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x6b95448416a02dc589833760746844ce29af37d8aae67b9b60a1697f7c62fc23\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7b9b305c0988c9c80b499835b40ba958a49aa1bd7342d2af45124463edac8715\",\"dweb:/ipfs/QmfQ4cAiv9U6joV6S6J6uMtLeijLTCCoz8BGG2U4knULQ3\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IERC20.sol:IERC20": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IERC20.sol\":{\"keccak256\":\"0xffa99694f4e4032bb172355a8a945673f2b478dd8beaae2924be031d508840e6\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a4797ac84843f2e7390441a1e906f99ae88470b85dbc33986d2b157cbafb879a\",\"dweb:/ipfs/QmSQcCyUgUfwSkqyu9aAAw8LcRjcMFYv7omtYfUWkYKXKQ\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IFeSwapCallee.sol:IFeSwapCallee": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "FeSwapCall",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"FeSwapCall\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFeSwapCallee.sol\":\"IFeSwapCallee\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFeSwapCallee.sol\":{\"keccak256\":\"0x8da1282693196e0e9b909c0b4f4b420754f1dbd433a4f455078bb8b8cc331a0b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://f4f2e06a02707f6a72b489af5eb5b6bc32130319f936cc1b3b3b1980fb07e280\",\"dweb:/ipfs/QmZ9yddVbCHY2rknF8QNTB9z2zYHkvbmnaShVf4K4hnpqL\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IFeSwapERC20.sol:IFeSwapERC20": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFeSwapERC20.sol\":\"IFeSwapERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IFeSwapFactory.sol:IFeSwapFactory": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pairAAB",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "address",
              "name": "pairABB",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "PairCreated",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "allPairs",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "allPairsLength",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            },
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "name": "configFactory",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "pairOwner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rateTrigger",
              "type": "uint256"
            }
          ],
          "name": "createUpdatePair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pairAAB",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "pairABB",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factoryAdmin",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feeTo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getFeeInfo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            }
          ],
          "name": "getPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pair",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "managePair",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "rateCapArbitrage",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "rateProfitShare",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "rateTriggerFactory",
          "outputs": [
            {
              "internalType": "uint64",
              "name": "",
              "type": "uint64"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "routerFeSwap",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFactoryAdmin",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setFeeTo",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "setRouterFeSwap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pairAAB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"pairABB\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"PairCreated\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"allPairs\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"allPairsLength\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"name\":\"configFactory\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pairOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rateTrigger\",\"type\":\"uint256\"}],\"name\":\"createUpdatePair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pairAAB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pairABB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factoryAdmin\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeTo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getFeeInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"}],\"name\":\"getPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pair\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"managePair\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateCapArbitrage\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateProfitShare\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateTriggerFactory\",\"outputs\":[{\"internalType\":\"uint64\",\"name\":\"\",\"type\":\"uint64\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"routerFeSwap\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFactoryAdmin\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setFeeTo\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"setRouterFeSwap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFeSwapFactory.sol\":\"IFeSwapFactory\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFeSwapFactory.sol\":{\"keccak256\":\"0x6380263efaf08b4bbb55a8441149baa7e350cfb7ef2ab4d7d1b9459048e47d64\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ed8209bcab83952ee61eead083e52e6396b6c8e9b4aa1c4e382f93bef60039d\",\"dweb:/ipfs/QmQuszK4Sw3NKZqvkhN6WYcjmgzzgegvY8a4joxEsJykye\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IFeSwapPair.sol:IFeSwapPair": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Burn",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "name": "Mint",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "sender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount0In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1In",
              "type": "uint256"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "amount1Out",
              "type": "uint256"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "Swap",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve0",
              "type": "uint112"
            },
            {
              "indexed": false,
              "internalType": "uint112",
              "name": "reserve1",
              "type": "uint112"
            }
          ],
          "name": "Sync",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "MINIMUM_LIQUIDITY",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "newRate",
              "type": "uint256"
            }
          ],
          "name": "adjusArbitragetRate",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "burn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amount0",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amount1",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "getReserves",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserveIn",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserveOut",
              "type": "uint112"
            },
            {
              "internalType": "uint32",
              "name": "_blockTimestampLast",
              "type": "uint32"
            },
            {
              "internalType": "uint256",
              "name": "_rateTriggerArbitrage",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "initialize",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "kLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "mint",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "liquidity",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pairOwner",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price0CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "price1CumulativeLast",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "rateTriggerArbitrage",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "_pairOwner",
              "type": "address"
            }
          ],
          "name": "setOwner",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            }
          ],
          "name": "skim",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "bytes",
              "name": "data",
              "type": "bytes"
            }
          ],
          "name": "swap",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "sync",
          "outputs": [
            {
              "internalType": "uint112",
              "name": "_reserveIn",
              "type": "uint112"
            },
            {
              "internalType": "uint112",
              "name": "_reserveOut",
              "type": "uint112"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tokenIn",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tokenOut",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Burn\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"name\":\"Mint\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"sender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount0In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1In\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount1Out\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"Swap\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve0\",\"type\":\"uint112\"},{\"indexed\":false,\"internalType\":\"uint112\",\"name\":\"reserve1\",\"type\":\"uint112\"}],\"name\":\"Sync\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MINIMUM_LIQUIDITY\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"newRate\",\"type\":\"uint256\"}],\"name\":\"adjusArbitragetRate\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"burn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amount0\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amount1\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"getReserves\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserveIn\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserveOut\",\"type\":\"uint112\"},{\"internalType\":\"uint32\",\"name\":\"_blockTimestampLast\",\"type\":\"uint32\"},{\"internalType\":\"uint256\",\"name\":\"_rateTriggerArbitrage\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"initialize\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"kLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"mint\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"liquidity\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pairOwner\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price0CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"price1CumulativeLast\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"rateTriggerArbitrage\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"_pairOwner\",\"type\":\"address\"}],\"name\":\"setOwner\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"}],\"name\":\"skim\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"bytes\",\"name\":\"data\",\"type\":\"bytes\"}],\"name\":\"swap\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"sync\",\"outputs\":[{\"internalType\":\"uint112\",\"name\":\"_reserveIn\",\"type\":\"uint112\"},{\"internalType\":\"uint112\",\"name\":\"_reserveOut\",\"type\":\"uint112\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenIn\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenOut\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFeSwapPair.sol\":\"IFeSwapPair\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]},\"contracts/interfaces/IFeSwapPair.sol\":{\"keccak256\":\"0x480046bc17bd6578c1943d7b487ed45183c581625b8abed2b97a48db1220c1d0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3dc34bc6ffcb16588ecd57a6fbe28595f6e2eda02ca13c6864708477bce9afcc\",\"dweb:/ipfs/QmVrkT7MXCc3SqrHaVb1arfndaJGfPeve4Q57Lc34xCChj\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IFeSwapRouter.sol:IFeSwapRouter": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenID",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "pairOwner",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "rateTrigger",
              "type": "uint256"
            }
          ],
          "name": "ManageFeswaPair",
          "outputs": [
            {
              "internalType": "address",
              "name": "pairAAB",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "pairABB",
              "type": "address"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "WETH",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountADesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ratio",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityABB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenDesired",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "ratio",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "addLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTEE",
              "type": "uint256"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "estimateAmountsIn",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            }
          ],
          "name": "estimateAmountsOut",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "factory",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "feswaNFT",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountIn",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveOut",
              "type": "uint256"
            }
          ],
          "name": "getAmountOut",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "reserveB",
              "type": "uint256"
            }
          ],
          "name": "quote",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityABB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidity",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTEE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityETH",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTEE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityETHFeeOnTransfer",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountTokenMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETHMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountToken",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "token",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTTE",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquidityTEE",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityETHWithPermitFeeOnTransfer",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountETH",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "tokenA",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "tokenB",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "liquidityAAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountAMin",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountBMin",
              "type": "uint256"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "bool",
              "name": "approveMax",
              "type": "bool"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "removeLiquidityWithPermit",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokensFeeOnTransfer",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETHFeeOnTransfer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokensFeeOnTransfer",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [
            {
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenID\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"pairOwner\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"rateTrigger\",\"type\":\"uint256\"}],\"name\":\"ManageFeswaPair\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"pairAAB\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"pairABB\",\"type\":\"address\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountADesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityABB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenDesired\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"ratio\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"addLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTEE\",\"type\":\"uint256\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"estimateAmountsIn\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"}],\"name\":\"estimateAmountsOut\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"factory\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feswaNFT\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountIn\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveOut\",\"type\":\"uint256\"}],\"name\":\"getAmountOut\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"reserveB\",\"type\":\"uint256\"}],\"name\":\"quote\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityABB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidity\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTEE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETH\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTEE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityETHFeeOnTransfer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountTokenMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETHMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountToken\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTTE\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquidityTEE\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityETHWithPermitFeeOnTransfer\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountETH\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"liquidityAAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountAMin\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountBMin\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"bool\",\"name\":\"approveMax\",\"type\":\"bool\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"removeLiquidityWithPermit\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokensFeeOnTransfer\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETHFeeOnTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokensFeeOnTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFeSwapRouter.sol\":\"IFeSwapRouter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFeSwapRouter.sol\":{\"keccak256\":\"0x84067893834807d34b847b315d9438fc4d4acee57496ea58f4be2aa39d904584\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af382f205e3a27ee135677c2be6d7f81f8b4f96beae9fc0e0278a591ec8a8760\",\"dweb:/ipfs/QmYXmiZMNGdiXBeaHhHFiRXpBArBF8XYs5jc3ayH7CJDn2\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IFeswaNFT.sol:IFeswaNFT": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "getPoolInfo",
          "outputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "tokenA",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "tokenB",
                  "type": "address"
                },
                {
                  "internalType": "uint256",
                  "name": "currentPrice",
                  "type": "uint256"
                },
                {
                  "internalType": "uint64",
                  "name": "timeCreated",
                  "type": "uint64"
                },
                {
                  "internalType": "uint64",
                  "name": "lastBidTime",
                  "type": "uint64"
                },
                {
                  "internalType": "enum PoolRunningPhase",
                  "name": "poolState",
                  "type": "uint8"
                }
              ],
              "internalType": "struct FeswaPair",
              "name": "",
              "type": "tuple"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "tokenId",
              "type": "uint256"
            }
          ],
          "name": "ownerOf",
          "outputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"getPoolInfo\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"components\":[{\"internalType\":\"address\",\"name\":\"tokenA\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"tokenB\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"currentPrice\",\"type\":\"uint256\"},{\"internalType\":\"uint64\",\"name\":\"timeCreated\",\"type\":\"uint64\"},{\"internalType\":\"uint64\",\"name\":\"lastBidTime\",\"type\":\"uint64\"},{\"internalType\":\"enum PoolRunningPhase\",\"name\":\"poolState\",\"type\":\"uint8\"}],\"internalType\":\"struct FeswaPair\",\"name\":\"\",\"type\":\"tuple\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"tokenId\",\"type\":\"uint256\"}],\"name\":\"ownerOf\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IFeswaNFT.sol\":\"IFeswaNFT\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFeswaNFT.sol\":{\"keccak256\":\"0xec225b5a3cbfdf495c38ae6dc5f2d7cb8af3283d94eeecca81c31b4e92684122\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://09d7bd69ce807fd5b91fb1846055cd3b9f18aa1d4e1522e3a99f996bd6a70b1c\",\"dweb:/ipfs/QmSDR3NsLNXF8WvQXKgw2rtq13EqZmVFMNi2P2cR8mQ7QC\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/interfaces/IWETH.sol:IWETH": {
      "abi": [
        {
          "inputs": [],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "",
          "opcodes": "",
          "sourceMap": ""
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/interfaces/IWETH.sol\":\"IWETH\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IWETH.sol\":{\"keccak256\":\"0x0880556c10a7ff3b827ea06f998d7bad2961953788582fb8a967f35fce3b6fba\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://42b9d6ad1eca93f92ff7fd9005b4fb58a0b6dfc44fb8c21b6b8e784bf4acaa94\",\"dweb:/ipfs/QmThKrCLx7W7EbKoWjHv7zn5WoWejJQNCFqdo24iP1FdnM\"]}},\"version\":1}",
      "bytecode": "",
      "bin": "",
      "bin-runtime": "",
      "srcmap": "",
      "srcmap-runtime": ""
    },
    "contracts/libraries/Babylonian.sol:Babylonian": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5559913243ba965f188b2e943172d2cdf3904da900c856d95537e744c2fc36b64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 SSTORE SWAP10 SGT 0x24 EXTCODESIZE 0xA9 PUSH6 0xF188B2E94317 0x2D 0x2C 0xDF CODECOPY DIV 0xDA SWAP1 0xC DUP6 PUSH14 0x95537E744C2FC36B64736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "205:355:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5559913243ba965f188b2e943172d2cdf3904da900c856d95537e744c2fc36b64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA5 SSTORE SWAP10 SGT 0x24 EXTCODESIZE 0xA9 PUSH6 0xF188B2E94317 0x2D 0x2C 0xDF CODECOPY DIV 0xDA SWAP1 0xC DUP6 PUSH14 0x95537E744C2FC36B64736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "205:355:12:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/Babylonian.sol\":\"Babylonian\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/Babylonian.sol\":{\"keccak256\":\"0x6ce754410402fc15400b193753e67130046c1eea8304583919190dfe944e1950\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://25a4ba527be515dd2bc4d735bc00bc9499d3df841a95eed9c29bbdbb7fe08355\",\"dweb:/ipfs/QmZDxmKDMxMec12LHXyFF2rDGZRLoVoSTaGbNJ5meZsMhW\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5559913243ba965f188b2e943172d2cdf3904da900c856d95537e744c2fc36b64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5559913243ba965f188b2e943172d2cdf3904da900c856d95537e744c2fc36b64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a5559913243ba965f188b2e943172d2cdf3904da900c856d95537e744c2fc36b64736f6c634300060c0033",
      "srcmap": "205:355:12:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "205:355:12:-:0;;;;;;;;"
    },
    "contracts/libraries/FeSwapLibrary.sol:FeSwapLibrary": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122031a13c77d7f38c631dcc7c7645994aae8ba39ca12067b5a8d3ff79bc63e2265e64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE LOG1 EXTCODECOPY PUSH24 0xD7F38C631DCC7C7645994AAE8BA39CA12067B5A8D3FF79BC PUSH4 0xE2265E64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
          "sourceMap": "212:6343:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122031a13c77d7f38c631dcc7c7645994aae8ba39ca12067b5a8d3ff79bc63e2265e64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 BALANCE LOG1 EXTCODECOPY PUSH24 0xD7F38C631DCC7C7645994AAE8BA39CA12067B5A8D3FF79BC PUSH4 0xE2265E64 PUSH20 0x6F6C634300060C00330000000000000000000000 ",
          "sourceMap": "212:6343:13:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/FeSwapLibrary.sol\":\"FeSwapLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]},\"contracts/interfaces/IFeSwapFactory.sol\":{\"keccak256\":\"0x6380263efaf08b4bbb55a8441149baa7e350cfb7ef2ab4d7d1b9459048e47d64\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ed8209bcab83952ee61eead083e52e6396b6c8e9b4aa1c4e382f93bef60039d\",\"dweb:/ipfs/QmQuszK4Sw3NKZqvkhN6WYcjmgzzgegvY8a4joxEsJykye\"]},\"contracts/interfaces/IFeSwapPair.sol\":{\"keccak256\":\"0x480046bc17bd6578c1943d7b487ed45183c581625b8abed2b97a48db1220c1d0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3dc34bc6ffcb16588ecd57a6fbe28595f6e2eda02ca13c6864708477bce9afcc\",\"dweb:/ipfs/QmVrkT7MXCc3SqrHaVb1arfndaJGfPeve4Q57Lc34xCChj\"]},\"contracts/libraries/FeSwapLibrary.sol\":{\"keccak256\":\"0x019dc9f2596d2b1f8271cff0ab70b4e0d8122bc96e4c0f7e70d1c9a3fdb88471\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d3cc44c6c398321e3b7fa7e980eab843db164d7d9c2b9fb53b4ad41a8ed50756\",\"dweb:/ipfs/QmS1jSY14znYL1AnVCGFSUwxMT3p7hEW63SmNxmTuXw2zu\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xf04a5109c9205c67202d408fdf6ce80ec28fcd93702bdba158d88aae5a6573ad\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ee35c811f41747d96f6946388815e9bf4d6c72dd3ddec7f1de3815979f3f415\",\"dweb:/ipfs/QmZFQ9oBd3DyZbzNf7eTesDxjNxyzpyPcxSC8w9RVRpNPM\"]},\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x6b95448416a02dc589833760746844ce29af37d8aae67b9b60a1697f7c62fc23\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7b9b305c0988c9c80b499835b40ba958a49aa1bd7342d2af45124463edac8715\",\"dweb:/ipfs/QmfQ4cAiv9U6joV6S6J6uMtLeijLTCCoz8BGG2U4knULQ3\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122031a13c77d7f38c631dcc7c7645994aae8ba39ca12067b5a8d3ff79bc63e2265e64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122031a13c77d7f38c631dcc7c7645994aae8ba39ca12067b5a8d3ff79bc63e2265e64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122031a13c77d7f38c631dcc7c7645994aae8ba39ca12067b5a8d3ff79bc63e2265e64736f6c634300060c0033",
      "srcmap": "212:6343:13:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "212:6343:13:-:0;;;;;;;;"
    },
    "contracts/libraries/FeSwapOracleLibrary.sol:FeSwapOracleLibrary": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dc08a4314cf3277b97ea799e8cd5ec0d212c0fc0ffce34340ba711f62132ef64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xDC ADDMOD LOG4 BALANCE 0x4C RETURN 0x27 PUSH28 0x97EA799E8CD5EC0D212C0FC0FFCE34340BA711F62132EF64736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
          "sourceMap": "229:1462:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dc08a4314cf3277b97ea799e8cd5ec0d212c0fc0ffce34340ba711f62132ef64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xDC ADDMOD LOG4 BALANCE 0x4C RETURN 0x27 PUSH28 0x97EA799E8CD5EC0D212C0FC0FFCE34340BA711F62132EF64736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
          "sourceMap": "229:1462:14:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/FeSwapOracleLibrary.sol\":\"FeSwapOracleLibrary\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]},\"contracts/interfaces/IFeSwapPair.sol\":{\"keccak256\":\"0x480046bc17bd6578c1943d7b487ed45183c581625b8abed2b97a48db1220c1d0\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://3dc34bc6ffcb16588ecd57a6fbe28595f6e2eda02ca13c6864708477bce9afcc\",\"dweb:/ipfs/QmVrkT7MXCc3SqrHaVb1arfndaJGfPeve4Q57Lc34xCChj\"]},\"contracts/libraries/Babylonian.sol\":{\"keccak256\":\"0x6ce754410402fc15400b193753e67130046c1eea8304583919190dfe944e1950\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://25a4ba527be515dd2bc4d735bc00bc9499d3df841a95eed9c29bbdbb7fe08355\",\"dweb:/ipfs/QmZDxmKDMxMec12LHXyFF2rDGZRLoVoSTaGbNJ5meZsMhW\"]},\"contracts/libraries/FeSwapOracleLibrary.sol\":{\"keccak256\":\"0x067ecb03b708e2c7d022d8a0bb71e6e52f01cac6bf1c8077462ea3c866992f8e\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1b245dde2b9f470544cc636a5b1e9fe8ebe96351c55c50e434ebcb8da365c9bc\",\"dweb:/ipfs/QmSYCX8o5YY2S72UbqiS74zb1hrhPgfa4rotxFyvUYrZkP\"]},\"contracts/libraries/FixedPoint.sol\":{\"keccak256\":\"0xe71786da2c55ae64244e0bb52c499c6320c7d48be0f75d50895134dae2f46c7b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://642d147ea904ea2bface29912ab5dde7a30e841f1c94ff2ad9672a2bc9625f45\",\"dweb:/ipfs/QmSg56XitcC8BmyT98YgXBxqiYDXGYWQnGLRUAg8rBpizB\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dc08a4314cf3277b97ea799e8cd5ec0d212c0fc0ffce34340ba711f62132ef64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dc08a4314cf3277b97ea799e8cd5ec0d212c0fc0ffce34340ba711f62132ef64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dc08a4314cf3277b97ea799e8cd5ec0d212c0fc0ffce34340ba711f62132ef64736f6c634300060c0033",
      "srcmap": "229:1462:14:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "229:1462:14:-:0;;;;;;;;"
    },
    "contracts/libraries/FixedPoint.sol:FixedPoint": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201febeb3ede0d75a3433d560df9aa536021211d30bbf7a6e7a33db21bb52d857364736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F 0xEB 0xEB RETURNDATACOPY 0xDE 0xD PUSH22 0xA3433D560DF9AA536021211D30BBF7A6E7A33DB21BB5 0x2D DUP6 PUSH20 0x64736F6C634300060C0033000000000000000000 ",
          "sourceMap": "199:2682:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201febeb3ede0d75a3433d560df9aa536021211d30bbf7a6e7a33db21bb52d857364736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x1F 0xEB 0xEB RETURNDATACOPY 0xDE 0xD PUSH22 0xA3433D560DF9AA536021211D30BBF7A6E7A33DB21BB5 0x2D DUP6 PUSH20 0x64736F6C634300060C0033000000000000000000 ",
          "sourceMap": "199:2682:15:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/FixedPoint.sol\":\"FixedPoint\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/Babylonian.sol\":{\"keccak256\":\"0x6ce754410402fc15400b193753e67130046c1eea8304583919190dfe944e1950\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://25a4ba527be515dd2bc4d735bc00bc9499d3df841a95eed9c29bbdbb7fe08355\",\"dweb:/ipfs/QmZDxmKDMxMec12LHXyFF2rDGZRLoVoSTaGbNJ5meZsMhW\"]},\"contracts/libraries/FixedPoint.sol\":{\"keccak256\":\"0xe71786da2c55ae64244e0bb52c499c6320c7d48be0f75d50895134dae2f46c7b\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://642d147ea904ea2bface29912ab5dde7a30e841f1c94ff2ad9672a2bc9625f45\",\"dweb:/ipfs/QmSg56XitcC8BmyT98YgXBxqiYDXGYWQnGLRUAg8rBpizB\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201febeb3ede0d75a3433d560df9aa536021211d30bbf7a6e7a33db21bb52d857364736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201febeb3ede0d75a3433d560df9aa536021211d30bbf7a6e7a33db21bb52d857364736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212201febeb3ede0d75a3433d560df9aa536021211d30bbf7a6e7a33db21bb52d857364736f6c634300060c0033",
      "srcmap": "199:2682:15:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "199:2682:15:-:0;;;;;;;;"
    },
    "contracts/libraries/Math.sol:Math": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dd5717f05e464ac8006c8e97cd3bf868852e0d9e418978c140b4e08eac0ff664736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xDD JUMPI OR CREATE 0x5E CHAINID 0x4A 0xC8 STOP PUSH13 0x8E97CD3BF868852E0D9E418978 0xC1 BLOCKHASH 0xB4 0xE0 DUP15 0xAC 0xF 0xF6 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "120:540:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dd5717f05e464ac8006c8e97cd3bf868852e0d9e418978c140b4e08eac0ff664736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xA7 0xDD JUMPI OR CREATE 0x5E CHAINID 0x4A 0xC8 STOP PUSH13 0x8E97CD3BF868852E0D9E418978 0xC1 BLOCKHASH 0xB4 0xE0 DUP15 0xAC 0xF 0xF6 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "120:540:16:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/Math.sol\":\"Math\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/Math.sol\":{\"keccak256\":\"0x0633fc66085fcd3edb82ac6b16838dbfd1582b0299676c2889ff9adae956b8ca\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://0b3f837831263e99a9e51c5f3dbe8b6bb77f8bbd611df3554aa8051f0916e030\",\"dweb:/ipfs/QmdYuTL39Ey484BEedoMLfRuhHHLGK4i9gEGzeH8jC2Ji1\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dd5717f05e464ac8006c8e97cd3bf868852e0d9e418978c140b4e08eac0ff664736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dd5717f05e464ac8006c8e97cd3bf868852e0d9e418978c140b4e08eac0ff664736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220a7dd5717f05e464ac8006c8e97cd3bf868852e0d9e418978c140b4e08eac0ff664736f6c634300060c0033",
      "srcmap": "120:540:16:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "120:540:16:-:0;;;;;;;;"
    },
    "contracts/libraries/SafeMath.sol:SafeMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071ec748c0179116cb120e1c706fcd7365784ac7447610ee56833d853e04a6e5b64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0xEC748C0179116CB120E1C706FCD7365784AC PUSH21 0x47610EE56833D853E04A6E5B64736F6C634300060C STOP CALLER ",
          "sourceMap": "173:442:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071ec748c0179116cb120e1c706fcd7365784ac7447610ee56833d853e04a6e5b64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH18 0xEC748C0179116CB120E1C706FCD7365784AC PUSH21 0x47610EE56833D853E04A6E5B64736F6C634300060C STOP CALLER ",
          "sourceMap": "173:442:17:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/SafeMath.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xf04a5109c9205c67202d408fdf6ce80ec28fcd93702bdba158d88aae5a6573ad\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ee35c811f41747d96f6946388815e9bf4d6c72dd3ddec7f1de3815979f3f415\",\"dweb:/ipfs/QmZFQ9oBd3DyZbzNf7eTesDxjNxyzpyPcxSC8w9RVRpNPM\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071ec748c0179116cb120e1c706fcd7365784ac7447610ee56833d853e04a6e5b64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071ec748c0179116cb120e1c706fcd7365784ac7447610ee56833d853e04a6e5b64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122071ec748c0179116cb120e1c706fcd7365784ac7447610ee56833d853e04a6e5b64736f6c634300060c0033",
      "srcmap": "173:442:17:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "173:442:17:-:0;;;;;;;;"
    },
    "contracts/libraries/TransferHelper.sol:TransferHelper": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205d51bfaa3ddc4cbb7144a4ce19baa2af5e43f8d226c9e4d8b8179817004bd60864736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D MLOAD 0xBF 0xAA RETURNDATASIZE 0xDC 0x4C 0xBB PUSH18 0x44A4CE19BAA2AF5E43F8D226C9E4D8B81798 OR STOP 0x4B 0xD6 ADDMOD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "179:1373:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205d51bfaa3ddc4cbb7144a4ce19baa2af5e43f8d226c9e4d8b8179817004bd60864736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x5D MLOAD 0xBF 0xAA RETURNDATASIZE 0xDC 0x4C 0xBB PUSH18 0x44A4CE19BAA2AF5E43F8D226C9E4D8B81798 OR STOP 0x4B 0xD6 ADDMOD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "179:1373:18:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/TransferHelper.sol\":\"TransferHelper\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/TransferHelper.sol\":{\"keccak256\":\"0x6b95448416a02dc589833760746844ce29af37d8aae67b9b60a1697f7c62fc23\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://7b9b305c0988c9c80b499835b40ba958a49aa1bd7342d2af45124463edac8715\",\"dweb:/ipfs/QmfQ4cAiv9U6joV6S6J6uMtLeijLTCCoz8BGG2U4knULQ3\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205d51bfaa3ddc4cbb7144a4ce19baa2af5e43f8d226c9e4d8b8179817004bd60864736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205d51bfaa3ddc4cbb7144a4ce19baa2af5e43f8d226c9e4d8b8179817004bd60864736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea26469706673582212205d51bfaa3ddc4cbb7144a4ce19baa2af5e43f8d226c9e4d8b8179817004bd60864736f6c634300060c0033",
      "srcmap": "179:1373:18:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "179:1373:18:-:0;;;;;;;;"
    },
    "contracts/libraries/UQ112x112.sol:UQ112x112": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e524e882dc4f106c4890315afdf7138f7b379140972b0a8447f6f0a25982b3b264736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 0x24 0xE8 DUP3 0xDC 0x4F LT PUSH13 0x4890315AFDF7138F7B37914097 0x2B EXP DUP5 SELFBALANCE 0xF6 CREATE LOG2 MSIZE DUP3 0xB3 0xB2 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "227:406:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e524e882dc4f106c4890315afdf7138f7b379140972b0a8447f6f0a25982b3b264736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE5 0x24 0xE8 DUP3 0xDC 0x4F LT PUSH13 0x4890315AFDF7138F7B37914097 0x2B EXP DUP5 SELFBALANCE 0xF6 CREATE LOG2 MSIZE DUP3 0xB3 0xB2 PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "227:406:19:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/libraries/UQ112x112.sol\":\"UQ112x112\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/UQ112x112.sol\":{\"keccak256\":\"0xc74700f2fa4a4396b83cafb9bc9776eb0c212da6af3f05287b690c14a5246dc1\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://da90a3b6d524567a221aac08958011a3924c85b22d52f67a65ce3015478fe19c\",\"dweb:/ipfs/QmcuYJZMRA79gVFGh9Nr89VzvKXgvUAGKaY1nDvoFxT4mt\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e524e882dc4f106c4890315afdf7138f7b379140972b0a8447f6f0a25982b3b264736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e524e882dc4f106c4890315afdf7138f7b379140972b0a8447f6f0a25982b3b264736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea2646970667358221220e524e882dc4f106c4890315afdf7138f7b379140972b0a8447f6f0a25982b3b264736f6c634300060c0033",
      "srcmap": "227:406:19:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "227:406:19:-:0;;;;;;;;"
    },
    "contracts/simu/FeSwapSimu.sol:FeSwapSimu": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "nTokenA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nTokenB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nA",
              "type": "uint256"
            }
          ],
          "name": "SwapAB",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nOutB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nA",
              "type": "uint256"
            }
          ],
          "name": "SwapABUni",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nOutB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nB",
              "type": "uint256"
            }
          ],
          "name": "SwapBA",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nOutA",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nB",
              "type": "uint256"
            }
          ],
          "name": "SwapBAUni",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nOutA",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nB",
              "type": "uint256"
            }
          ],
          "name": "addLiquidityAB",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nOutA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nOutB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lpAB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nB",
              "type": "uint256"
            }
          ],
          "name": "addLiquidityBA",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nOutA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nOutB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lpBA",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nB",
              "type": "uint256"
            }
          ],
          "name": "addLiquidityUni",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nAddedA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nAddedB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "lpAB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "arbitrage",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mineFeeAB",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mineFeeBA",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "mineFeeUni",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "pool",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "AmountAA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "AmountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "AmountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "AmountBB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "LiquityAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "LiquityBA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "KLastAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "KLastBA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeLiquidityPoolAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeLiquidityCreatorAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeLiquidityPoolBA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeLiquidityCreatorBA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "arbitrageTime",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "poolUni",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "AmountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "AmountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "Liquity",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "KLast",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "feeUniPool",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nLiquidity",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityAB",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nRemoveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nRemoveB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nLiquidity",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityBA",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nRemoveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nRemoveB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "userID",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nLiquidity",
              "type": "uint256"
            }
          ],
          "name": "removeLiquidityUni",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "nRemoveA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "nRemoveB",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "name": "users",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "amountA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquityAB",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquityBA",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "liquityUni",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b5060405161142e38038061142e8339818101604052604081101561003357600080fd5b50805160209091015160005b60198110156100955782670de0b6b3a7640000026000826019811061006057fe5b6005020155670de0b6b3a764000082026000826019811061007d57fe5b6005020160010181905550808060010191505061003f565b505050611387806100a76000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063a5267dc6116100b2578063cc0478f411610081578063ef31c6b711610066578063ef31c6b714610385578063f1a7af9f146103a8578063fec9af02146103b05761011b565b8063cc0478f414610339578063dee169271461035c5761011b565b8063a5267dc6146102e3578063afec93db146102eb578063c2dc0b651461030e578063c4575f93146103315761011b565b806369c8d338116100ee57806369c8d338146102515780636c95361d1461025b578063716445a8146102845780639b0ae61b146102a75761011b565b806316f0115b14610120578063312f0ac31461018d578063365b98b2146101d457806346c913621461021c575b600080fd5b6101286103b8565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b6101b6600480360360608110156101a357600080fd5b50803590602081013590604001356103e2565b60408051938452602084019290925282820152519081900360600190f35b6101f1600480360360208110156101ea57600080fd5b503561054c565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b61023f6004803603604081101561023257600080fd5b508035906020013561057e565b60408051918252519081900360200190f35b61025961063b565b005b6101b66004803603606081101561027157600080fd5b50803590602081013590604001356106cc565b61023f6004803603604081101561029a57600080fd5b5080359060200135610836565b6102ca600480360360408110156102bd57600080fd5b50803590602001356108b7565b6040805192835260208301919091528051918290030190f35b610259610a07565b6102ca6004803603604081101561030157600080fd5b5080359060200135610ad8565b6102ca6004803603604081101561032457600080fd5b5080359060200135610c28565b610259610d78565b61023f6004803603604081101561034f57600080fd5b5080359060200135610e41565b6101b66004803603606081101561037257600080fd5b5080359060208101359060400135610ec1565b61023f6004803603604081101561039b57600080fd5b508035906020013561102b565b6102596110e2565b6101f1611165565b607d54607e54607f546080546081546082546083546084546085546086546087546088546089548d565b670de0b6b3a76400009182029102600080806103fc610d78565b607f54158061040b5750608054155b15610432578492508391506103e8610424838502611177565b6103e86082550390506104bc565b607f546080546000919087028161044557fe5b0490506000607d60030154607d6002015487028161045f57fe5b0490508582116104745786945081935061047b565b8593508094505b607f546082546000919087028161048e57fe5b0490506000607d60030154607d600501548702816104a857fe5b0490506104b582826111c9565b9450505050505b607f80548401908190556080805484019081905560828054840190556104e29102611177565b60845582600087601981106104f357fe5b600502018054919091039055816000876019811061050d57fe5b6005020160010160008282540392505081905550806000876019811061052f57fe5b600502016003016000828254019250508190555093509350939050565b6000816019811061055957fe5b6005020180546001820154600283015460038401546004909401549294509092909185565b670de0b6b3a764000002600080610597836103e56111e1565b608b549091506000906105ab9083906111e1565b905060006105d3836105cd6103e8608a600001546111e190919063ffffffff16565b9061126d565b90508082816105de57fe5b608a805488019055608b8054929091049182900390559350846000876019811061060457fe5b600502018054919091039055836000876019811061061e57fe5b600502016001016000828254019250508190555050505092915050565b608054607d54607e54607f549190920291026103f281026103e88302106106c857608054607e54600091016002028284038161067357fe5b0490506000607d60000154607d60020154016002028385038161069257fe5b607d80548590039055607f805490940190935560808054919093049081900390925550607e805490910190556089805460010190555b5050565b670de0b6b3a76400009182029102600080806106e6610a07565b607d5415806106f55750607e54155b1561071c578492508391506103e861070e838502611177565b6103e86081550390506107a6565b607d54607e546000919087028161072f57fe5b0490506000607d60010154607d6000015487028161074957fe5b04905085821161075e57869450819350610765565b8593508094505b607d546081546000919087028161077857fe5b0490506000607d60010154607d6004015487028161079257fe5b04905061079f82826111c9565b9450505050505b607d8054840190819055607e805484019081905560818054840190556107cc9102611177565b60835582600087601981106107dd57fe5b60050201805491909103905581600087601981106107f757fe5b6005020160010160008282540392505081905550806000876019811061081957fe5b600502016002016000828254019250508190555093509350939050565b670de0b6b3a764000002600061084a61063b565b607d54607e549083019083028161085d57fe5b607d805485019055607e8054929091049182900390559050816000846019811061088357fe5b600502018054919091039055806000846019811061089d57fe5b600502016001016000828254019250508190555092915050565b600080600084601981106108c757fe5b600502016002015483111561093d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610945610a07565b608154607d546109569085906111e1565b8161095d57fe5b608154607e54929091049350906109759085906111e1565b8161097c57fe5b049050826000856019811061098d57fe5b60050201600201805491909103905560818054849003905581600085601981106109b357fe5b600502018054909101905580600085601981106109cc57fe5b600502016001018054919091019055607d805483900390819055607e8054839003908190556109fb9102611177565b60835590939092509050565b607e54607d54600091610a1a9102611177565b608354909150811115610ad5576000610a586006610a52610a49607d60060154866112df90919063ffffffff16565b608154906111e1565b906111e1565b608354909150600090610a70906105cd85600b6111e1565b90506000610a7f82600a6111e1565b8381610a8757fe5b0490508015610aa157608180548201905560868054820190555b6000610aae83600f6111e1565b8481610ab657fe5b0490508015610ad057608180548201905560858054820190555b505050505b50565b60008060008460198110610ae857fe5b6005020160040154831115610b5e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610b666110e2565b608c54608a54610b779085906111e1565b81610b7e57fe5b608c54608b5492909104935090610b969085906111e1565b81610b9d57fe5b0490508260008560198110610bae57fe5b600502016004018054919091039055608c805484900390558160008560198110610bd457fe5b60050201805490910190558060008560198110610bed57fe5b600502016001018054919091019055608a805483900390819055608b805483900390819055610c1c9102611177565b608d5590939092509050565b60008060008460198110610c3857fe5b6005020160030154831115610cae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610cb6610d78565b608254607f54610cc79085906111e1565b81610cce57fe5b60825460805492909104935090610ce69085906111e1565b81610ced57fe5b0490508260008560198110610cfe57fe5b6005020160030180549190910390556082805484900390558160008560198110610d2457fe5b60050201805490910190558060008560198110610d3d57fe5b600502016001018054919091019055607f8054839003908190556080805483900390819055610d6c9102611177565b60845590939092509050565b608054607f54600091610d8b9102611177565b608454909150811115610ad5576000610dc36006610a52610dba607d60070154866112df90919063ffffffff16565b608254906111e1565b608454909150600090610ddb906105cd85600b6111e1565b90506000610dea82600a6111e1565b8381610df257fe5b0490508015610e0c57608280548201905560888054820190555b6000610e1983600f6111e1565b8481610e2157fe5b0490508015610ad057608280548201905560878054820190555050505050565b670de0b6b3a7640000026000610e5561063b565b608054607f5490830190830281610e6857fe5b6080805485019055607f80549290910491829003905590508160008460198110610e8e57fe5b60050201600101600082825403925050819055508060008460198110610eb057fe5b600502018054909101905592915050565b670de0b6b3a7640000918202910260008080610edb6110e2565b608a541580610eea5750608b54155b15610f11578492508391506103e8610f03838502611177565b6103e8608c55039050610f9b565b608a54608b5460009190870281610f2457fe5b0490506000608a60010154608a60000154870281610f3e57fe5b049050858211610f5357869450819350610f5a565b8593508094505b608a54608c5460009190870281610f6d57fe5b0490506000608a60010154608a60020154870281610f8757fe5b049050610f9482826111c9565b9450505050505b608a8054840190819055608b8054840190819055608c805484019055610fc19102611177565b608d558260008760198110610fd257fe5b6005020180549190910390558160008760198110610fec57fe5b6005020160010160008282540392505081905550806000876019811061100e57fe5b600502016004016000828254019250508190555093509350939050565b670de0b6b3a764000002600080611044836103e56111e1565b608a549091506000906110589083906111e1565b9050600061107a836105cd6103e8608a600101546111e190919063ffffffff16565b905080828161108557fe5b608b805488019055608a805492909104918290039055935084600087601981106110ab57fe5b600502016001016000828254039250508190555083600087601981106110cd57fe5b60050201805490910190555091949350505050565b608b54608a546000916110f59102611177565b608d54909150811115610ad557608d54600090611120906111179084906112df565b608c54906111e1565b608d54909150600090611138906105cd8560056111e1565b9050600081838161114557fe5b049050801561115f57608c805482019055608e8054820190555b50505050565b608a54608b54608c54608d54608e5485565b600060038211156111ba575080600160028204015b818110156111b4578091506002818285816111a357fe5b0401816111ac57fe5b04905061118c565b506111c4565b81156111c4575060015b919050565b60008183106111d857816111da565b825b9392505050565b60008115806111fc575050808202828282816111f957fe5b04145b61126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b8082018281101561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfea264697066735822122055dbaae7f8dea417e4afea48bdcdc0250722f9c724fa6db2799aaef76075f23a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0x142E CODESIZE SUB DUP1 PUSH2 0x142E DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 MLOAD PUSH1 0x20 SWAP1 SWAP2 ADD MLOAD PUSH1 0x0 JUMPDEST PUSH1 0x19 DUP2 LT ISZERO PUSH2 0x95 JUMPI DUP3 PUSH8 0xDE0B6B3A7640000 MUL PUSH1 0x0 DUP3 PUSH1 0x19 DUP2 LT PUSH2 0x60 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD SSTORE PUSH8 0xDE0B6B3A7640000 DUP3 MUL PUSH1 0x0 DUP3 PUSH1 0x19 DUP2 LT PUSH2 0x7D JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD DUP2 SWAP1 SSTORE POP DUP1 DUP1 PUSH1 0x1 ADD SWAP2 POP POP PUSH2 0x3F JUMP JUMPDEST POP POP POP PUSH2 0x1387 DUP1 PUSH2 0xA7 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA5267DC6 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xCC0478F4 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xEF31C6B7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xEF31C6B7 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xF1A7AF9F EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0xFEC9AF02 EQ PUSH2 0x3B0 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xCC0478F4 EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0xDEE16927 EQ PUSH2 0x35C JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xA5267DC6 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xAFEC93DB EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xC2DC0B65 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xC4575F93 EQ PUSH2 0x331 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x69C8D338 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x69C8D338 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x6C95361D EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x716445A8 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x9B0AE61B EQ PUSH2 0x2A7 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x16F0115B EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x312F0AC3 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x365B98B2 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x46C91362 EQ PUSH2 0x21C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x128 PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP14 DUP15 MSTORE PUSH1 0x20 DUP15 ADD SWAP13 SWAP1 SWAP13 MSTORE DUP13 DUP13 ADD SWAP11 SWAP1 SWAP11 MSTORE PUSH1 0x60 DUP13 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x80 DUP12 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0xA0 DUP11 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP10 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xE0 DUP9 ADD MSTORE PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x120 DUP7 ADD MSTORE PUSH2 0x140 DUP6 ADD MSTORE PUSH2 0x160 DUP5 ADD MSTORE PUSH2 0x180 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x1A0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x57E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH2 0x63B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6CC JUMP JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x836 JUMP JUMPDEST PUSH2 0x2CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH2 0xA07 JUMP JUMPDEST PUSH2 0x2CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAD8 JUMP JUMPDEST PUSH2 0x2CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC28 JUMP JUMPDEST PUSH2 0x259 PUSH2 0xD78 JUMP JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE41 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x372 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x102B JUMP JUMPDEST PUSH2 0x259 PUSH2 0x10E2 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x1165 JUMP JUMPDEST PUSH1 0x7D SLOAD PUSH1 0x7E SLOAD PUSH1 0x7F SLOAD PUSH1 0x80 SLOAD PUSH1 0x81 SLOAD PUSH1 0x82 SLOAD PUSH1 0x83 SLOAD PUSH1 0x84 SLOAD PUSH1 0x85 SLOAD PUSH1 0x86 SLOAD PUSH1 0x87 SLOAD PUSH1 0x88 SLOAD PUSH1 0x89 SLOAD DUP14 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 MUL SWAP2 MUL PUSH1 0x0 DUP1 DUP1 PUSH2 0x3FC PUSH2 0xD78 JUMP JUMPDEST PUSH1 0x7F SLOAD ISZERO DUP1 PUSH2 0x40B JUMPI POP PUSH1 0x80 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x432 JUMPI DUP5 SWAP3 POP DUP4 SWAP2 POP PUSH2 0x3E8 PUSH2 0x424 DUP4 DUP6 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x3E8 PUSH1 0x82 SSTORE SUB SWAP1 POP PUSH2 0x4BC JUMP JUMPDEST PUSH1 0x7F SLOAD PUSH1 0x80 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0x445 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x3 ADD SLOAD PUSH1 0x7D PUSH1 0x2 ADD SLOAD DUP8 MUL DUP2 PUSH2 0x45F JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP6 DUP3 GT PUSH2 0x474 JUMPI DUP7 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x47B JUMP JUMPDEST DUP6 SWAP4 POP DUP1 SWAP5 POP JUMPDEST PUSH1 0x7F SLOAD PUSH1 0x82 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0x48E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x3 ADD SLOAD PUSH1 0x7D PUSH1 0x5 ADD SLOAD DUP8 MUL DUP2 PUSH2 0x4A8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x4B5 DUP3 DUP3 PUSH2 0x11C9 JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST PUSH1 0x7F DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x80 DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x82 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH2 0x4E2 SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x84 SSTORE DUP3 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x4F3 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x50D JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x52F JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x19 DUP2 LT PUSH2 0x559 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 SWAP1 SWAP2 DUP6 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MUL PUSH1 0x0 DUP1 PUSH2 0x597 DUP4 PUSH2 0x3E5 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x8B SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x5AB SWAP1 DUP4 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5D3 DUP4 PUSH2 0x5CD PUSH2 0x3E8 PUSH1 0x8A PUSH1 0x0 ADD SLOAD PUSH2 0x11E1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x126D JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x5DE JUMPI INVALID JUMPDEST PUSH1 0x8A DUP1 SLOAD DUP9 ADD SWAP1 SSTORE PUSH1 0x8B DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE SWAP4 POP DUP5 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x604 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP4 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x61E JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 SLOAD PUSH1 0x7D SLOAD PUSH1 0x7E SLOAD PUSH1 0x7F SLOAD SWAP2 SWAP1 SWAP3 MUL SWAP2 MUL PUSH2 0x3F2 DUP2 MUL PUSH2 0x3E8 DUP4 MUL LT PUSH2 0x6C8 JUMPI PUSH1 0x80 SLOAD PUSH1 0x7E SLOAD PUSH1 0x0 SWAP2 ADD PUSH1 0x2 MUL DUP3 DUP5 SUB DUP2 PUSH2 0x673 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x0 ADD SLOAD PUSH1 0x7D PUSH1 0x2 ADD SLOAD ADD PUSH1 0x2 MUL DUP4 DUP6 SUB DUP2 PUSH2 0x692 JUMPI INVALID JUMPDEST PUSH1 0x7D DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE PUSH1 0x7F DUP1 SLOAD SWAP1 SWAP5 ADD SWAP1 SWAP4 SSTORE PUSH1 0x80 DUP1 SLOAD SWAP2 SWAP1 SWAP4 DIV SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP3 SSTORE POP PUSH1 0x7E DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x89 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 MUL SWAP2 MUL PUSH1 0x0 DUP1 DUP1 PUSH2 0x6E6 PUSH2 0xA07 JUMP JUMPDEST PUSH1 0x7D SLOAD ISZERO DUP1 PUSH2 0x6F5 JUMPI POP PUSH1 0x7E SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x71C JUMPI DUP5 SWAP3 POP DUP4 SWAP2 POP PUSH2 0x3E8 PUSH2 0x70E DUP4 DUP6 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x3E8 PUSH1 0x81 SSTORE SUB SWAP1 POP PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x7D SLOAD PUSH1 0x7E SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0x72F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x1 ADD SLOAD PUSH1 0x7D PUSH1 0x0 ADD SLOAD DUP8 MUL DUP2 PUSH2 0x749 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP6 DUP3 GT PUSH2 0x75E JUMPI DUP7 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x765 JUMP JUMPDEST DUP6 SWAP4 POP DUP1 SWAP5 POP JUMPDEST PUSH1 0x7D SLOAD PUSH1 0x81 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0x778 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x1 ADD SLOAD PUSH1 0x7D PUSH1 0x4 ADD SLOAD DUP8 MUL DUP2 PUSH2 0x792 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x79F DUP3 DUP3 PUSH2 0x11C9 JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST PUSH1 0x7D DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x7E DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x81 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH2 0x7CC SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x83 SSTORE DUP3 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x7DD JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x7F7 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x819 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x2 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MUL PUSH1 0x0 PUSH2 0x84A PUSH2 0x63B JUMP JUMPDEST PUSH1 0x7D SLOAD PUSH1 0x7E SLOAD SWAP1 DUP4 ADD SWAP1 DUP4 MUL DUP2 PUSH2 0x85D JUMPI INVALID JUMPDEST PUSH1 0x7D DUP1 SLOAD DUP6 ADD SWAP1 SSTORE PUSH1 0x7E DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE SWAP1 POP DUP2 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0x883 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0x89D JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0x8C7 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x2 ADD SLOAD DUP4 GT ISZERO PUSH2 0x93D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2073756368204C6971756964697479000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x945 PUSH2 0xA07 JUMP JUMPDEST PUSH1 0x81 SLOAD PUSH1 0x7D SLOAD PUSH2 0x956 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0x95D JUMPI INVALID JUMPDEST PUSH1 0x81 SLOAD PUSH1 0x7E SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP4 POP SWAP1 PUSH2 0x975 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0x97C JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP3 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0x98D JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x2 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE PUSH1 0x81 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0x9B3 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE DUP1 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0x9CC JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x7D DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x7E DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH2 0x9FB SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x83 SSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x7E SLOAD PUSH1 0x7D SLOAD PUSH1 0x0 SWAP2 PUSH2 0xA1A SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x83 SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 PUSH2 0xA58 PUSH1 0x6 PUSH2 0xA52 PUSH2 0xA49 PUSH1 0x7D PUSH1 0x6 ADD SLOAD DUP7 PUSH2 0x12DF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x81 SLOAD SWAP1 PUSH2 0x11E1 JUMP JUMPDEST SWAP1 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x83 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xA70 SWAP1 PUSH2 0x5CD DUP6 PUSH1 0xB PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA7F DUP3 PUSH1 0xA PUSH2 0x11E1 JUMP JUMPDEST DUP4 DUP2 PUSH2 0xA87 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xAA1 JUMPI PUSH1 0x81 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x86 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xAAE DUP4 PUSH1 0xF PUSH2 0x11E1 JUMP JUMPDEST DUP5 DUP2 PUSH2 0xAB6 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xAD0 JUMPI PUSH1 0x81 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x85 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0xAE8 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x4 ADD SLOAD DUP4 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2073756368204C6971756964697479000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB66 PUSH2 0x10E2 JUMP JUMPDEST PUSH1 0x8C SLOAD PUSH1 0x8A SLOAD PUSH2 0xB77 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0xB7E JUMPI INVALID JUMPDEST PUSH1 0x8C SLOAD PUSH1 0x8B SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP4 POP SWAP1 PUSH2 0xB96 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0xB9D JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP3 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xBAE JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x4 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE PUSH1 0x8C DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xBD4 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE DUP1 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xBED JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x8A DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8B DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH2 0xC1C SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x8D SSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x3 ADD SLOAD DUP4 GT ISZERO PUSH2 0xCAE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2073756368204C6971756964697479000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCB6 PUSH2 0xD78 JUMP JUMPDEST PUSH1 0x82 SLOAD PUSH1 0x7F SLOAD PUSH2 0xCC7 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0xCCE JUMPI INVALID JUMPDEST PUSH1 0x82 SLOAD PUSH1 0x80 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP4 POP SWAP1 PUSH2 0xCE6 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0xCED JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP3 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xCFE JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x3 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE PUSH1 0x82 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xD24 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE DUP1 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xD3D JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x7F DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x80 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH2 0xD6C SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x84 SSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x80 SLOAD PUSH1 0x7F SLOAD PUSH1 0x0 SWAP2 PUSH2 0xD8B SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x84 SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 PUSH2 0xDC3 PUSH1 0x6 PUSH2 0xA52 PUSH2 0xDBA PUSH1 0x7D PUSH1 0x7 ADD SLOAD DUP7 PUSH2 0x12DF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x82 SLOAD SWAP1 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x84 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xDDB SWAP1 PUSH2 0x5CD DUP6 PUSH1 0xB PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDEA DUP3 PUSH1 0xA PUSH2 0x11E1 JUMP JUMPDEST DUP4 DUP2 PUSH2 0xDF2 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xE0C JUMPI PUSH1 0x82 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x88 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xE19 DUP4 PUSH1 0xF PUSH2 0x11E1 JUMP JUMPDEST DUP5 DUP2 PUSH2 0xE21 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xAD0 JUMPI PUSH1 0x82 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x87 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MUL PUSH1 0x0 PUSH2 0xE55 PUSH2 0x63B JUMP JUMPDEST PUSH1 0x80 SLOAD PUSH1 0x7F SLOAD SWAP1 DUP4 ADD SWAP1 DUP4 MUL DUP2 PUSH2 0xE68 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE PUSH1 0x7F DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE SWAP1 POP DUP2 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0xE8E JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0xEB0 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 MUL SWAP2 MUL PUSH1 0x0 DUP1 DUP1 PUSH2 0xEDB PUSH2 0x10E2 JUMP JUMPDEST PUSH1 0x8A SLOAD ISZERO DUP1 PUSH2 0xEEA JUMPI POP PUSH1 0x8B SLOAD ISZERO JUMPDEST ISZERO PUSH2 0xF11 JUMPI DUP5 SWAP3 POP DUP4 SWAP2 POP PUSH2 0x3E8 PUSH2 0xF03 DUP4 DUP6 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x3E8 PUSH1 0x8C SSTORE SUB SWAP1 POP PUSH2 0xF9B JUMP JUMPDEST PUSH1 0x8A SLOAD PUSH1 0x8B SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0xF24 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x8A PUSH1 0x1 ADD SLOAD PUSH1 0x8A PUSH1 0x0 ADD SLOAD DUP8 MUL DUP2 PUSH2 0xF3E JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP6 DUP3 GT PUSH2 0xF53 JUMPI DUP7 SWAP5 POP DUP2 SWAP4 POP PUSH2 0xF5A JUMP JUMPDEST DUP6 SWAP4 POP DUP1 SWAP5 POP JUMPDEST PUSH1 0x8A SLOAD PUSH1 0x8C SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0xF6D JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x8A PUSH1 0x1 ADD SLOAD PUSH1 0x8A PUSH1 0x2 ADD SLOAD DUP8 MUL DUP2 PUSH2 0xF87 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xF94 DUP3 DUP3 PUSH2 0x11C9 JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST PUSH1 0x8A DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8B DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8C DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH2 0xFC1 SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x8D SSTORE DUP3 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0xFD2 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0xFEC JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x100E JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MUL PUSH1 0x0 DUP1 PUSH2 0x1044 DUP4 PUSH2 0x3E5 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x8A SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1058 SWAP1 DUP4 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x107A DUP4 PUSH2 0x5CD PUSH2 0x3E8 PUSH1 0x8A PUSH1 0x1 ADD SLOAD PUSH2 0x11E1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x1085 JUMPI INVALID JUMPDEST PUSH1 0x8B DUP1 SLOAD DUP9 ADD SWAP1 SSTORE PUSH1 0x8A DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE SWAP4 POP DUP5 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x10AB JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP4 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x10CD JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x8B SLOAD PUSH1 0x8A SLOAD PUSH1 0x0 SWAP2 PUSH2 0x10F5 SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x8D SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x8D SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1120 SWAP1 PUSH2 0x1117 SWAP1 DUP5 SWAP1 PUSH2 0x12DF JUMP JUMPDEST PUSH1 0x8C SLOAD SWAP1 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x8D SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1138 SWAP1 PUSH2 0x5CD DUP6 PUSH1 0x5 PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x1145 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x115F JUMPI PUSH1 0x8C DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x8E DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x8A SLOAD PUSH1 0x8B SLOAD PUSH1 0x8C SLOAD PUSH1 0x8D SLOAD PUSH1 0x8E SLOAD DUP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x11BA JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11B4 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x11A3 JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x11AC JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x118C JUMP JUMPDEST POP PUSH2 0x11C4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x11C4 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x11D8 JUMPI DUP2 PUSH2 0x11DA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x11FC JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x11F9 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1267 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x1267 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1267 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE 0xDB 0xAA 0xE7 0xF8 0xDE LOG4 OR 0xE4 0xAF 0xEA 0x48 0xBD 0xCD 0xC0 0x25 SMOD 0x22 0xF9 0xC7 0x24 STATICCALL PUSH14 0xB2799AAEF76075F23A64736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
          "sourceMap": "511:12532:20:-:0;;;1442:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1442:512:20;;;;;;;1505:6;1500:152;1517:2;1515:1;:4;1500:152;;;1560:7;1570;1560:17;1541:5;1547:1;1541:8;;;;;;;;;;:36;1621:7;1611:17;;1541:16;1598:1;1592:8;;;;;;;;;;:16;;:36;;;;1521:3;;;;;;;1500:152;;;;1442:512;;511:12532;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b506004361061011b5760003560e01c8063a5267dc6116100b2578063cc0478f411610081578063ef31c6b711610066578063ef31c6b714610385578063f1a7af9f146103a8578063fec9af02146103b05761011b565b8063cc0478f414610339578063dee169271461035c5761011b565b8063a5267dc6146102e3578063afec93db146102eb578063c2dc0b651461030e578063c4575f93146103315761011b565b806369c8d338116100ee57806369c8d338146102515780636c95361d1461025b578063716445a8146102845780639b0ae61b146102a75761011b565b806316f0115b14610120578063312f0ac31461018d578063365b98b2146101d457806346c913621461021c575b600080fd5b6101286103b8565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b6101b6600480360360608110156101a357600080fd5b50803590602081013590604001356103e2565b60408051938452602084019290925282820152519081900360600190f35b6101f1600480360360208110156101ea57600080fd5b503561054c565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b61023f6004803603604081101561023257600080fd5b508035906020013561057e565b60408051918252519081900360200190f35b61025961063b565b005b6101b66004803603606081101561027157600080fd5b50803590602081013590604001356106cc565b61023f6004803603604081101561029a57600080fd5b5080359060200135610836565b6102ca600480360360408110156102bd57600080fd5b50803590602001356108b7565b6040805192835260208301919091528051918290030190f35b610259610a07565b6102ca6004803603604081101561030157600080fd5b5080359060200135610ad8565b6102ca6004803603604081101561032457600080fd5b5080359060200135610c28565b610259610d78565b61023f6004803603604081101561034f57600080fd5b5080359060200135610e41565b6101b66004803603606081101561037257600080fd5b5080359060208101359060400135610ec1565b61023f6004803603604081101561039b57600080fd5b508035906020013561102b565b6102596110e2565b6101f1611165565b607d54607e54607f546080546081546082546083546084546085546086546087546088546089548d565b670de0b6b3a76400009182029102600080806103fc610d78565b607f54158061040b5750608054155b15610432578492508391506103e8610424838502611177565b6103e86082550390506104bc565b607f546080546000919087028161044557fe5b0490506000607d60030154607d6002015487028161045f57fe5b0490508582116104745786945081935061047b565b8593508094505b607f546082546000919087028161048e57fe5b0490506000607d60030154607d600501548702816104a857fe5b0490506104b582826111c9565b9450505050505b607f80548401908190556080805484019081905560828054840190556104e29102611177565b60845582600087601981106104f357fe5b600502018054919091039055816000876019811061050d57fe5b6005020160010160008282540392505081905550806000876019811061052f57fe5b600502016003016000828254019250508190555093509350939050565b6000816019811061055957fe5b6005020180546001820154600283015460038401546004909401549294509092909185565b670de0b6b3a764000002600080610597836103e56111e1565b608b549091506000906105ab9083906111e1565b905060006105d3836105cd6103e8608a600001546111e190919063ffffffff16565b9061126d565b90508082816105de57fe5b608a805488019055608b8054929091049182900390559350846000876019811061060457fe5b600502018054919091039055836000876019811061061e57fe5b600502016001016000828254019250508190555050505092915050565b608054607d54607e54607f549190920291026103f281026103e88302106106c857608054607e54600091016002028284038161067357fe5b0490506000607d60000154607d60020154016002028385038161069257fe5b607d80548590039055607f805490940190935560808054919093049081900390925550607e805490910190556089805460010190555b5050565b670de0b6b3a76400009182029102600080806106e6610a07565b607d5415806106f55750607e54155b1561071c578492508391506103e861070e838502611177565b6103e86081550390506107a6565b607d54607e546000919087028161072f57fe5b0490506000607d60010154607d6000015487028161074957fe5b04905085821161075e57869450819350610765565b8593508094505b607d546081546000919087028161077857fe5b0490506000607d60010154607d6004015487028161079257fe5b04905061079f82826111c9565b9450505050505b607d8054840190819055607e805484019081905560818054840190556107cc9102611177565b60835582600087601981106107dd57fe5b60050201805491909103905581600087601981106107f757fe5b6005020160010160008282540392505081905550806000876019811061081957fe5b600502016002016000828254019250508190555093509350939050565b670de0b6b3a764000002600061084a61063b565b607d54607e549083019083028161085d57fe5b607d805485019055607e8054929091049182900390559050816000846019811061088357fe5b600502018054919091039055806000846019811061089d57fe5b600502016001016000828254019250508190555092915050565b600080600084601981106108c757fe5b600502016002015483111561093d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610945610a07565b608154607d546109569085906111e1565b8161095d57fe5b608154607e54929091049350906109759085906111e1565b8161097c57fe5b049050826000856019811061098d57fe5b60050201600201805491909103905560818054849003905581600085601981106109b357fe5b600502018054909101905580600085601981106109cc57fe5b600502016001018054919091019055607d805483900390819055607e8054839003908190556109fb9102611177565b60835590939092509050565b607e54607d54600091610a1a9102611177565b608354909150811115610ad5576000610a586006610a52610a49607d60060154866112df90919063ffffffff16565b608154906111e1565b906111e1565b608354909150600090610a70906105cd85600b6111e1565b90506000610a7f82600a6111e1565b8381610a8757fe5b0490508015610aa157608180548201905560868054820190555b6000610aae83600f6111e1565b8481610ab657fe5b0490508015610ad057608180548201905560858054820190555b505050505b50565b60008060008460198110610ae857fe5b6005020160040154831115610b5e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610b666110e2565b608c54608a54610b779085906111e1565b81610b7e57fe5b608c54608b5492909104935090610b969085906111e1565b81610b9d57fe5b0490508260008560198110610bae57fe5b600502016004018054919091039055608c805484900390558160008560198110610bd457fe5b60050201805490910190558060008560198110610bed57fe5b600502016001018054919091019055608a805483900390819055608b805483900390819055610c1c9102611177565b608d5590939092509050565b60008060008460198110610c3857fe5b6005020160030154831115610cae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610cb6610d78565b608254607f54610cc79085906111e1565b81610cce57fe5b60825460805492909104935090610ce69085906111e1565b81610ced57fe5b0490508260008560198110610cfe57fe5b6005020160030180549190910390556082805484900390558160008560198110610d2457fe5b60050201805490910190558060008560198110610d3d57fe5b600502016001018054919091019055607f8054839003908190556080805483900390819055610d6c9102611177565b60845590939092509050565b608054607f54600091610d8b9102611177565b608454909150811115610ad5576000610dc36006610a52610dba607d60070154866112df90919063ffffffff16565b608254906111e1565b608454909150600090610ddb906105cd85600b6111e1565b90506000610dea82600a6111e1565b8381610df257fe5b0490508015610e0c57608280548201905560888054820190555b6000610e1983600f6111e1565b8481610e2157fe5b0490508015610ad057608280548201905560878054820190555050505050565b670de0b6b3a7640000026000610e5561063b565b608054607f5490830190830281610e6857fe5b6080805485019055607f80549290910491829003905590508160008460198110610e8e57fe5b60050201600101600082825403925050819055508060008460198110610eb057fe5b600502018054909101905592915050565b670de0b6b3a7640000918202910260008080610edb6110e2565b608a541580610eea5750608b54155b15610f11578492508391506103e8610f03838502611177565b6103e8608c55039050610f9b565b608a54608b5460009190870281610f2457fe5b0490506000608a60010154608a60000154870281610f3e57fe5b049050858211610f5357869450819350610f5a565b8593508094505b608a54608c5460009190870281610f6d57fe5b0490506000608a60010154608a60020154870281610f8757fe5b049050610f9482826111c9565b9450505050505b608a8054840190819055608b8054840190819055608c805484019055610fc19102611177565b608d558260008760198110610fd257fe5b6005020180549190910390558160008760198110610fec57fe5b6005020160010160008282540392505081905550806000876019811061100e57fe5b600502016004016000828254019250508190555093509350939050565b670de0b6b3a764000002600080611044836103e56111e1565b608a549091506000906110589083906111e1565b9050600061107a836105cd6103e8608a600101546111e190919063ffffffff16565b905080828161108557fe5b608b805488019055608a805492909104918290039055935084600087601981106110ab57fe5b600502016001016000828254039250508190555083600087601981106110cd57fe5b60050201805490910190555091949350505050565b608b54608a546000916110f59102611177565b608d54909150811115610ad557608d54600090611120906111179084906112df565b608c54906111e1565b608d54909150600090611138906105cd8560056111e1565b9050600081838161114557fe5b049050801561115f57608c805482019055608e8054820190555b50505050565b608a54608b54608c54608d54608e5485565b600060038211156111ba575080600160028204015b818110156111b4578091506002818285816111a357fe5b0401816111ac57fe5b04905061118c565b506111c4565b81156111c4575060015b919050565b60008183106111d857816111da565b825b9392505050565b60008115806111fc575050808202828282816111f957fe5b04145b61126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b8082018281101561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfea264697066735822122055dbaae7f8dea417e4afea48bdcdc0250722f9c724fa6db2799aaef76075f23a64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0x11B JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0xA5267DC6 GT PUSH2 0xB2 JUMPI DUP1 PUSH4 0xCC0478F4 GT PUSH2 0x81 JUMPI DUP1 PUSH4 0xEF31C6B7 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0xEF31C6B7 EQ PUSH2 0x385 JUMPI DUP1 PUSH4 0xF1A7AF9F EQ PUSH2 0x3A8 JUMPI DUP1 PUSH4 0xFEC9AF02 EQ PUSH2 0x3B0 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xCC0478F4 EQ PUSH2 0x339 JUMPI DUP1 PUSH4 0xDEE16927 EQ PUSH2 0x35C JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0xA5267DC6 EQ PUSH2 0x2E3 JUMPI DUP1 PUSH4 0xAFEC93DB EQ PUSH2 0x2EB JUMPI DUP1 PUSH4 0xC2DC0B65 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xC4575F93 EQ PUSH2 0x331 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x69C8D338 GT PUSH2 0xEE JUMPI DUP1 PUSH4 0x69C8D338 EQ PUSH2 0x251 JUMPI DUP1 PUSH4 0x6C95361D EQ PUSH2 0x25B JUMPI DUP1 PUSH4 0x716445A8 EQ PUSH2 0x284 JUMPI DUP1 PUSH4 0x9B0AE61B EQ PUSH2 0x2A7 JUMPI PUSH2 0x11B JUMP JUMPDEST DUP1 PUSH4 0x16F0115B EQ PUSH2 0x120 JUMPI DUP1 PUSH4 0x312F0AC3 EQ PUSH2 0x18D JUMPI DUP1 PUSH4 0x365B98B2 EQ PUSH2 0x1D4 JUMPI DUP1 PUSH4 0x46C91362 EQ PUSH2 0x21C JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0x128 PUSH2 0x3B8 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP14 DUP15 MSTORE PUSH1 0x20 DUP15 ADD SWAP13 SWAP1 SWAP13 MSTORE DUP13 DUP13 ADD SWAP11 SWAP1 SWAP11 MSTORE PUSH1 0x60 DUP13 ADD SWAP9 SWAP1 SWAP9 MSTORE PUSH1 0x80 DUP12 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH1 0xA0 DUP11 ADD SWAP5 SWAP1 SWAP5 MSTORE PUSH1 0xC0 DUP10 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0xE0 DUP9 ADD MSTORE PUSH2 0x100 DUP8 ADD MSTORE PUSH2 0x120 DUP7 ADD MSTORE PUSH2 0x140 DUP6 ADD MSTORE PUSH2 0x160 DUP5 ADD MSTORE PUSH2 0x180 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH2 0x1A0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1A3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3E2 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP4 DUP5 MSTORE PUSH1 0x20 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE DUP3 DUP3 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x60 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1F1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x1EA JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x54C JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP6 DUP7 MSTORE PUSH1 0x20 DUP7 ADD SWAP5 SWAP1 SWAP5 MSTORE DUP5 DUP5 ADD SWAP3 SWAP1 SWAP3 MSTORE PUSH1 0x60 DUP5 ADD MSTORE PUSH1 0x80 DUP4 ADD MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0xA0 ADD SWAP1 RETURN JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x232 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x57E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH2 0x63B JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x271 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x6CC JUMP JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x29A JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x836 JUMP JUMPDEST PUSH2 0x2CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8B7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP3 DUP4 MSTORE PUSH1 0x20 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 DUP3 SWAP1 SUB ADD SWAP1 RETURN JUMPDEST PUSH2 0x259 PUSH2 0xA07 JUMP JUMPDEST PUSH2 0x2CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x301 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xAD8 JUMP JUMPDEST PUSH2 0x2CA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x324 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC28 JUMP JUMPDEST PUSH2 0x259 PUSH2 0xD78 JUMP JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x34F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xE41 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x372 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0xEC1 JUMP JUMPDEST PUSH2 0x23F PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x39B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x102B JUMP JUMPDEST PUSH2 0x259 PUSH2 0x10E2 JUMP JUMPDEST PUSH2 0x1F1 PUSH2 0x1165 JUMP JUMPDEST PUSH1 0x7D SLOAD PUSH1 0x7E SLOAD PUSH1 0x7F SLOAD PUSH1 0x80 SLOAD PUSH1 0x81 SLOAD PUSH1 0x82 SLOAD PUSH1 0x83 SLOAD PUSH1 0x84 SLOAD PUSH1 0x85 SLOAD PUSH1 0x86 SLOAD PUSH1 0x87 SLOAD PUSH1 0x88 SLOAD PUSH1 0x89 SLOAD DUP14 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 MUL SWAP2 MUL PUSH1 0x0 DUP1 DUP1 PUSH2 0x3FC PUSH2 0xD78 JUMP JUMPDEST PUSH1 0x7F SLOAD ISZERO DUP1 PUSH2 0x40B JUMPI POP PUSH1 0x80 SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x432 JUMPI DUP5 SWAP3 POP DUP4 SWAP2 POP PUSH2 0x3E8 PUSH2 0x424 DUP4 DUP6 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x3E8 PUSH1 0x82 SSTORE SUB SWAP1 POP PUSH2 0x4BC JUMP JUMPDEST PUSH1 0x7F SLOAD PUSH1 0x80 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0x445 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x3 ADD SLOAD PUSH1 0x7D PUSH1 0x2 ADD SLOAD DUP8 MUL DUP2 PUSH2 0x45F JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP6 DUP3 GT PUSH2 0x474 JUMPI DUP7 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x47B JUMP JUMPDEST DUP6 SWAP4 POP DUP1 SWAP5 POP JUMPDEST PUSH1 0x7F SLOAD PUSH1 0x82 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0x48E JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x3 ADD SLOAD PUSH1 0x7D PUSH1 0x5 ADD SLOAD DUP8 MUL DUP2 PUSH2 0x4A8 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x4B5 DUP3 DUP3 PUSH2 0x11C9 JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST PUSH1 0x7F DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x80 DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x82 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH2 0x4E2 SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x84 SSTORE DUP3 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x4F3 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x50D JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x52F JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x3 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 PUSH1 0x19 DUP2 LT PUSH2 0x559 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD PUSH1 0x1 DUP3 ADD SLOAD PUSH1 0x2 DUP4 ADD SLOAD PUSH1 0x3 DUP5 ADD SLOAD PUSH1 0x4 SWAP1 SWAP5 ADD SLOAD SWAP3 SWAP5 POP SWAP1 SWAP3 SWAP1 SWAP2 DUP6 JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MUL PUSH1 0x0 DUP1 PUSH2 0x597 DUP4 PUSH2 0x3E5 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x8B SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x5AB SWAP1 DUP4 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x5D3 DUP4 PUSH2 0x5CD PUSH2 0x3E8 PUSH1 0x8A PUSH1 0x0 ADD SLOAD PUSH2 0x11E1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 PUSH2 0x126D JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x5DE JUMPI INVALID JUMPDEST PUSH1 0x8A DUP1 SLOAD DUP9 ADD SWAP1 SSTORE PUSH1 0x8B DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE SWAP4 POP DUP5 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x604 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP4 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x61E JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP POP POP POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x80 SLOAD PUSH1 0x7D SLOAD PUSH1 0x7E SLOAD PUSH1 0x7F SLOAD SWAP2 SWAP1 SWAP3 MUL SWAP2 MUL PUSH2 0x3F2 DUP2 MUL PUSH2 0x3E8 DUP4 MUL LT PUSH2 0x6C8 JUMPI PUSH1 0x80 SLOAD PUSH1 0x7E SLOAD PUSH1 0x0 SWAP2 ADD PUSH1 0x2 MUL DUP3 DUP5 SUB DUP2 PUSH2 0x673 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x0 ADD SLOAD PUSH1 0x7D PUSH1 0x2 ADD SLOAD ADD PUSH1 0x2 MUL DUP4 DUP6 SUB DUP2 PUSH2 0x692 JUMPI INVALID JUMPDEST PUSH1 0x7D DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE PUSH1 0x7F DUP1 SLOAD SWAP1 SWAP5 ADD SWAP1 SWAP4 SSTORE PUSH1 0x80 DUP1 SLOAD SWAP2 SWAP1 SWAP4 DIV SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP3 SSTORE POP PUSH1 0x7E DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x89 DUP1 SLOAD PUSH1 0x1 ADD SWAP1 SSTORE JUMPDEST POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 MUL SWAP2 MUL PUSH1 0x0 DUP1 DUP1 PUSH2 0x6E6 PUSH2 0xA07 JUMP JUMPDEST PUSH1 0x7D SLOAD ISZERO DUP1 PUSH2 0x6F5 JUMPI POP PUSH1 0x7E SLOAD ISZERO JUMPDEST ISZERO PUSH2 0x71C JUMPI DUP5 SWAP3 POP DUP4 SWAP2 POP PUSH2 0x3E8 PUSH2 0x70E DUP4 DUP6 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x3E8 PUSH1 0x81 SSTORE SUB SWAP1 POP PUSH2 0x7A6 JUMP JUMPDEST PUSH1 0x7D SLOAD PUSH1 0x7E SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0x72F JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x1 ADD SLOAD PUSH1 0x7D PUSH1 0x0 ADD SLOAD DUP8 MUL DUP2 PUSH2 0x749 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP6 DUP3 GT PUSH2 0x75E JUMPI DUP7 SWAP5 POP DUP2 SWAP4 POP PUSH2 0x765 JUMP JUMPDEST DUP6 SWAP4 POP DUP1 SWAP5 POP JUMPDEST PUSH1 0x7D SLOAD PUSH1 0x81 SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0x778 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x7D PUSH1 0x1 ADD SLOAD PUSH1 0x7D PUSH1 0x4 ADD SLOAD DUP8 MUL DUP2 PUSH2 0x792 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x79F DUP3 DUP3 PUSH2 0x11C9 JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST PUSH1 0x7D DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x7E DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x81 DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH2 0x7CC SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x83 SSTORE DUP3 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x7DD JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x7F7 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x819 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x2 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MUL PUSH1 0x0 PUSH2 0x84A PUSH2 0x63B JUMP JUMPDEST PUSH1 0x7D SLOAD PUSH1 0x7E SLOAD SWAP1 DUP4 ADD SWAP1 DUP4 MUL DUP2 PUSH2 0x85D JUMPI INVALID JUMPDEST PUSH1 0x7D DUP1 SLOAD DUP6 ADD SWAP1 SSTORE PUSH1 0x7E DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE SWAP1 POP DUP2 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0x883 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0x89D JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0x8C7 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x2 ADD SLOAD DUP4 GT ISZERO PUSH2 0x93D JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2073756368204C6971756964697479000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x945 PUSH2 0xA07 JUMP JUMPDEST PUSH1 0x81 SLOAD PUSH1 0x7D SLOAD PUSH2 0x956 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0x95D JUMPI INVALID JUMPDEST PUSH1 0x81 SLOAD PUSH1 0x7E SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP4 POP SWAP1 PUSH2 0x975 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0x97C JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP3 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0x98D JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x2 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE PUSH1 0x81 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0x9B3 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE DUP1 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0x9CC JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x7D DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x7E DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH2 0x9FB SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x83 SSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x7E SLOAD PUSH1 0x7D SLOAD PUSH1 0x0 SWAP2 PUSH2 0xA1A SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x83 SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 PUSH2 0xA58 PUSH1 0x6 PUSH2 0xA52 PUSH2 0xA49 PUSH1 0x7D PUSH1 0x6 ADD SLOAD DUP7 PUSH2 0x12DF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x81 SLOAD SWAP1 PUSH2 0x11E1 JUMP JUMPDEST SWAP1 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x83 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xA70 SWAP1 PUSH2 0x5CD DUP6 PUSH1 0xB PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xA7F DUP3 PUSH1 0xA PUSH2 0x11E1 JUMP JUMPDEST DUP4 DUP2 PUSH2 0xA87 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xAA1 JUMPI PUSH1 0x81 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x86 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xAAE DUP4 PUSH1 0xF PUSH2 0x11E1 JUMP JUMPDEST DUP5 DUP2 PUSH2 0xAB6 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xAD0 JUMPI PUSH1 0x81 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x85 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST POP POP POP POP JUMPDEST POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0xAE8 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x4 ADD SLOAD DUP4 GT ISZERO PUSH2 0xB5E JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2073756368204C6971756964697479000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xB66 PUSH2 0x10E2 JUMP JUMPDEST PUSH1 0x8C SLOAD PUSH1 0x8A SLOAD PUSH2 0xB77 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0xB7E JUMPI INVALID JUMPDEST PUSH1 0x8C SLOAD PUSH1 0x8B SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP4 POP SWAP1 PUSH2 0xB96 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0xB9D JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP3 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xBAE JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x4 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE PUSH1 0x8C DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xBD4 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE DUP1 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xBED JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x8A DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8B DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH2 0xC1C SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x8D SSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0xC38 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x3 ADD SLOAD DUP4 GT ISZERO PUSH2 0xCAE JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4E6F2073756368204C6971756964697479000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0xCB6 PUSH2 0xD78 JUMP JUMPDEST PUSH1 0x82 SLOAD PUSH1 0x7F SLOAD PUSH2 0xCC7 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0xCCE JUMPI INVALID JUMPDEST PUSH1 0x82 SLOAD PUSH1 0x80 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP4 POP SWAP1 PUSH2 0xCE6 SWAP1 DUP6 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST DUP2 PUSH2 0xCED JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP3 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xCFE JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x3 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE PUSH1 0x82 DUP1 SLOAD DUP5 SWAP1 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xD24 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE DUP1 PUSH1 0x0 DUP6 PUSH1 0x19 DUP2 LT PUSH2 0xD3D JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 ADD SWAP1 SSTORE PUSH1 0x7F DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x80 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 DUP2 SWAP1 SSTORE PUSH2 0xD6C SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x84 SSTORE SWAP1 SWAP4 SWAP1 SWAP3 POP SWAP1 POP JUMP JUMPDEST PUSH1 0x80 SLOAD PUSH1 0x7F SLOAD PUSH1 0x0 SWAP2 PUSH2 0xD8B SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x84 SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x0 PUSH2 0xDC3 PUSH1 0x6 PUSH2 0xA52 PUSH2 0xDBA PUSH1 0x7D PUSH1 0x7 ADD SLOAD DUP7 PUSH2 0x12DF SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST PUSH1 0x82 SLOAD SWAP1 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x84 SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0xDDB SWAP1 PUSH2 0x5CD DUP6 PUSH1 0xB PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0xDEA DUP3 PUSH1 0xA PUSH2 0x11E1 JUMP JUMPDEST DUP4 DUP2 PUSH2 0xDF2 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xE0C JUMPI PUSH1 0x82 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x88 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST PUSH1 0x0 PUSH2 0xE19 DUP4 PUSH1 0xF PUSH2 0x11E1 JUMP JUMPDEST DUP5 DUP2 PUSH2 0xE21 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0xAD0 JUMPI PUSH1 0x82 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x87 DUP1 SLOAD DUP3 ADD SWAP1 SSTORE POP POP POP POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MUL PUSH1 0x0 PUSH2 0xE55 PUSH2 0x63B JUMP JUMPDEST PUSH1 0x80 SLOAD PUSH1 0x7F SLOAD SWAP1 DUP4 ADD SWAP1 DUP4 MUL DUP2 PUSH2 0xE68 JUMPI INVALID JUMPDEST PUSH1 0x80 DUP1 SLOAD DUP6 ADD SWAP1 SSTORE PUSH1 0x7F DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE SWAP1 POP DUP2 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0xE8E JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP5 PUSH1 0x19 DUP2 LT PUSH2 0xEB0 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 SWAP2 DUP3 MUL SWAP2 MUL PUSH1 0x0 DUP1 DUP1 PUSH2 0xEDB PUSH2 0x10E2 JUMP JUMPDEST PUSH1 0x8A SLOAD ISZERO DUP1 PUSH2 0xEEA JUMPI POP PUSH1 0x8B SLOAD ISZERO JUMPDEST ISZERO PUSH2 0xF11 JUMPI DUP5 SWAP3 POP DUP4 SWAP2 POP PUSH2 0x3E8 PUSH2 0xF03 DUP4 DUP6 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH2 0x3E8 PUSH1 0x8C SSTORE SUB SWAP1 POP PUSH2 0xF9B JUMP JUMPDEST PUSH1 0x8A SLOAD PUSH1 0x8B SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0xF24 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x8A PUSH1 0x1 ADD SLOAD PUSH1 0x8A PUSH1 0x0 ADD SLOAD DUP8 MUL DUP2 PUSH2 0xF3E JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP6 DUP3 GT PUSH2 0xF53 JUMPI DUP7 SWAP5 POP DUP2 SWAP4 POP PUSH2 0xF5A JUMP JUMPDEST DUP6 SWAP4 POP DUP1 SWAP5 POP JUMPDEST PUSH1 0x8A SLOAD PUSH1 0x8C SLOAD PUSH1 0x0 SWAP2 SWAP1 DUP8 MUL DUP2 PUSH2 0xF6D JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH1 0x0 PUSH1 0x8A PUSH1 0x1 ADD SLOAD PUSH1 0x8A PUSH1 0x2 ADD SLOAD DUP8 MUL DUP2 PUSH2 0xF87 JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0xF94 DUP3 DUP3 PUSH2 0x11C9 JUMP JUMPDEST SWAP5 POP POP POP POP POP JUMPDEST PUSH1 0x8A DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8B DUP1 SLOAD DUP5 ADD SWAP1 DUP2 SWAP1 SSTORE PUSH1 0x8C DUP1 SLOAD DUP5 ADD SWAP1 SSTORE PUSH2 0xFC1 SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x8D SSTORE DUP3 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0xFD2 JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP2 SWAP1 SWAP2 SUB SWAP1 SSTORE DUP2 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0xFEC JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP1 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x100E JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x4 ADD PUSH1 0x0 DUP3 DUP3 SLOAD ADD SWAP3 POP POP DUP2 SWAP1 SSTORE POP SWAP4 POP SWAP4 POP SWAP4 SWAP1 POP JUMP JUMPDEST PUSH8 0xDE0B6B3A7640000 MUL PUSH1 0x0 DUP1 PUSH2 0x1044 DUP4 PUSH2 0x3E5 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x8A SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1058 SWAP1 DUP4 SWAP1 PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 PUSH2 0x107A DUP4 PUSH2 0x5CD PUSH2 0x3E8 PUSH1 0x8A PUSH1 0x1 ADD SLOAD PUSH2 0x11E1 SWAP1 SWAP2 SWAP1 PUSH4 0xFFFFFFFF AND JUMP JUMPDEST SWAP1 POP DUP1 DUP3 DUP2 PUSH2 0x1085 JUMPI INVALID JUMPDEST PUSH1 0x8B DUP1 SLOAD DUP9 ADD SWAP1 SSTORE PUSH1 0x8A DUP1 SLOAD SWAP3 SWAP1 SWAP2 DIV SWAP2 DUP3 SWAP1 SUB SWAP1 SSTORE SWAP4 POP DUP5 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x10AB JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD PUSH1 0x1 ADD PUSH1 0x0 DUP3 DUP3 SLOAD SUB SWAP3 POP POP DUP2 SWAP1 SSTORE POP DUP4 PUSH1 0x0 DUP8 PUSH1 0x19 DUP2 LT PUSH2 0x10CD JUMPI INVALID JUMPDEST PUSH1 0x5 MUL ADD DUP1 SLOAD SWAP1 SWAP2 ADD SWAP1 SSTORE POP SWAP2 SWAP5 SWAP4 POP POP POP POP JUMP JUMPDEST PUSH1 0x8B SLOAD PUSH1 0x8A SLOAD PUSH1 0x0 SWAP2 PUSH2 0x10F5 SWAP2 MUL PUSH2 0x1177 JUMP JUMPDEST PUSH1 0x8D SLOAD SWAP1 SWAP2 POP DUP2 GT ISZERO PUSH2 0xAD5 JUMPI PUSH1 0x8D SLOAD PUSH1 0x0 SWAP1 PUSH2 0x1120 SWAP1 PUSH2 0x1117 SWAP1 DUP5 SWAP1 PUSH2 0x12DF JUMP JUMPDEST PUSH1 0x8C SLOAD SWAP1 PUSH2 0x11E1 JUMP JUMPDEST PUSH1 0x8D SLOAD SWAP1 SWAP2 POP PUSH1 0x0 SWAP1 PUSH2 0x1138 SWAP1 PUSH2 0x5CD DUP6 PUSH1 0x5 PUSH2 0x11E1 JUMP JUMPDEST SWAP1 POP PUSH1 0x0 DUP2 DUP4 DUP2 PUSH2 0x1145 JUMPI INVALID JUMPDEST DIV SWAP1 POP DUP1 ISZERO PUSH2 0x115F JUMPI PUSH1 0x8C DUP1 SLOAD DUP3 ADD SWAP1 SSTORE PUSH1 0x8E DUP1 SLOAD DUP3 ADD SWAP1 SSTORE JUMPDEST POP POP POP POP JUMP JUMPDEST PUSH1 0x8A SLOAD PUSH1 0x8B SLOAD PUSH1 0x8C SLOAD PUSH1 0x8D SLOAD PUSH1 0x8E SLOAD DUP6 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x3 DUP3 GT ISZERO PUSH2 0x11BA JUMPI POP DUP1 PUSH1 0x1 PUSH1 0x2 DUP3 DIV ADD JUMPDEST DUP2 DUP2 LT ISZERO PUSH2 0x11B4 JUMPI DUP1 SWAP2 POP PUSH1 0x2 DUP2 DUP3 DUP6 DUP2 PUSH2 0x11A3 JUMPI INVALID JUMPDEST DIV ADD DUP2 PUSH2 0x11AC JUMPI INVALID JUMPDEST DIV SWAP1 POP PUSH2 0x118C JUMP JUMPDEST POP PUSH2 0x11C4 JUMP JUMPDEST DUP2 ISZERO PUSH2 0x11C4 JUMPI POP PUSH1 0x1 JUMPDEST SWAP2 SWAP1 POP JUMP JUMPDEST PUSH1 0x0 DUP2 DUP4 LT PUSH2 0x11D8 JUMPI DUP2 PUSH2 0x11DA JUMP JUMPDEST DUP3 JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH1 0x0 DUP2 ISZERO DUP1 PUSH2 0x11FC JUMPI POP POP DUP1 DUP3 MUL DUP3 DUP3 DUP3 DUP2 PUSH2 0x11F9 JUMPI INVALID JUMPDEST DIV EQ JUMPDEST PUSH2 0x1267 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6D756C2D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x1267 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x1267 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 SSTORE 0xDB 0xAA 0xE7 0xF8 0xDE LOG4 OR 0xE4 0xAF 0xEA 0x48 0xBD 0xCD 0xC0 0x25 SMOD 0x22 0xF9 0xC7 0x24 STATICCALL PUSH14 0xB2799AAEF76075F23A64736F6C63 NUMBER STOP MOD 0xC STOP CALLER ",
          "sourceMap": "511:12532:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1379:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:1236;;;;;;;;;;;;;;;;-1:-1:-1;6719:1236:20;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1351:21;;;;;;;;;;;;;;;;-1:-1:-1;1351:21:20;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10114:514;;;;;;;;;;;;;;;;-1:-1:-1;10114:514:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11875:633;;;:::i;:::-;;5473:1234;;;;;;;;;;;;;;;;-1:-1:-1;5473:1234:20;;;;;;;;;;;;:::i;11162:346::-;;;;;;;;;;;;;;;;-1:-1:-1;11162:346:20;;;;;;;:::i;8696:691::-;;;;;;;;;;;;;;;;-1:-1:-1;8696:691:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2491:812;;;:::i;7967:714::-;;;;;;;;;;;;;;;;-1:-1:-1;7967:714:20;;;;;;;:::i;9396:701::-;;;;;;;;;;;;;;;;-1:-1:-1;9396:701:20;;;;;;;:::i;3315:812::-;;;:::i;11520:343::-;;;;;;;;;;;;;;;;-1:-1:-1;11520:343:20;;;;;;;:::i;4139:1324::-;;;;;;;;;;;;;;;;-1:-1:-1;4139:1324:20;;;;;;;;;;;;:::i;10640:510::-;;;;;;;;;;;;;;;;-1:-1:-1;10640:510:20;;;;;;;:::i;1962:521::-;;;:::i;1406:23::-;;;:::i;1379:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6719:1236::-;6844:7;6838:13;;;;6862;6792:10;;;6896:11;:9;:11::i;:::-;6923:12;;:17;;6922:43;;-1:-1:-1;6946:13:20;;:18;6922:43;6918:724;;;6990:2;6982:10;;7015:2;7007:10;;7061:4;7039:19;7052:5;7044;:13;7039:4;:19::i;:::-;7097:4;7080:14;:21;7039:26;;-1:-1:-1;6918:724:20;;;7178:12;;7162:13;;7144:10;;7178:12;7157:18;;7178:12;7157:33;;;;;7144:46;;7205:10;7238:4;:13;;;7223:4;:12;;;7218:2;:17;:33;;;;;;7205:46;;7278:2;7269:5;:11;7266:188;;7308:2;7300:10;;7337:5;7329:13;;7266:188;;;7404:2;7396:10;;7433:5;7425:13;;7266:188;7507:12;;7490:14;;7468:11;;7507:12;7482:22;;7507:12;7482:37;;;;;7468:51;;7534:11;7573:4;:13;;;7556:4;:14;;;7548:5;:22;:38;;;;;;7534:52;;7611:19;7615:6;7623;7611:3;:19::i;:::-;7604:26;;6918:724;;;;;7656:12;:21;;;;;;;;7688:13;:22;;;;;;;;7722:14;:22;;;;;;7770:34;;7775:28;7770:4;:34::i;:::-;7755:12;:49;7859:5;7834;7840:6;7834:13;;;;;;;;;;:30;;;;;;;;7900:5;7834:21;7881:6;7875:13;;;;;;;;;;:21;;;:30;;;;;;;;;;;7943:4;7916:5;7922:6;7916:13;;;;;;;;;;:23;;;:31;;;;;;;;;;;6719:1236;;;;;;;:::o;1351:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1351:21:20;;;;;:::o;10114:514::-;10204:7;10198:13;10174:10;;10255:11;10198:13;10262:3;10255:6;:11::i;:::-;10314:15;;10232:34;;-1:-1:-1;10277:14:20;;10294:36;;10232:34;;10294:19;:36::i;:::-;10277:53;;10341:16;10360:48;10392:15;10360:27;10382:4;10361:7;:15;;;10360:21;;:27;;;;:::i;:::-;:31;;:48::i;:::-;10341:67;;10439:11;10427:9;:23;;;;;10463:7;:21;;;;;;10495:15;:24;;10427:23;;;;10495:24;;;;;;10427:23;-1:-1:-1;10482:2:20;10463:15;10550:6;10544:13;;;;;;;;;;:27;;;;;;;;10607:5;10544:21;10588:6;10582:13;;;;;;;;;;:21;;;:30;;;;;;;;;;;10114:514;;;;;;;:::o;11875:633::-;11947:13;;:4;11931:13;12003:12;;11988;;11931:29;;;;;11988:27;12064:4;12052:16;;12042:4;12031:15;;12030:39;12026:475;;12152:13;;12136:12;;12086:14;;12136:29;12132:1;:34;12104:22;;;12132:34;12103:65;;;;;12086:82;;12197:14;12263:4;:13;;;12247:4;:12;;;:29;12243:1;:34;12227:10;12215:9;:22;12214:65;;;;;12303:4;:26;;;;;;;12344:12;:25;;;;;;;;12385:13;:26;;12214:65;;;;12385:26;;;;;;;-1:-1:-1;12426:12:20;:25;;;;;;;12466:18;:23;;-1:-1:-1;12466:23:20;;;12026:475;11875:633;;:::o;5473:1234::-;5598:7;5592:13;;;;5616;5546:10;;;5650:11;:9;:11::i;:::-;5677:4;:13;:18;;5676:43;;-1:-1:-1;5701:12:20;;:17;5676:43;5672:724;;;5744:2;5736:10;;5769:2;5761:10;;5815:4;5793:19;5806:5;5798;:13;5793:4;:19::i;:::-;5851:4;5834:14;:21;5793:26;;-1:-1:-1;5672:724:20;;;5931:4;:13;5916:12;;5898:10;;5931:13;5911:17;;5931:13;5911:33;;;;;5898:46;;5959:10;5993:4;:12;;;5977:4;:13;;;5972:2;:18;:33;;;;;;5959:46;;6032:2;6023:5;:11;6020:188;;6062:2;6054:10;;6091:5;6083:13;;6020:188;;;6158:2;6150:10;;6187:5;6179:13;;6020:188;6261:4;:13;6244:14;;6222:11;;6261:13;6236:22;;6261:13;6236:38;;;;;6222:52;;6289:11;6328:4;:12;;;6311:4;:14;;;6303:5;:22;:37;;;;;;6289:51;;6365:19;6369:6;6377;6365:3;:19::i;:::-;6358:26;;5672:724;;;;;6406:4;:22;;;;;;;;6439:12;:21;;;;;;;;6472:14;:22;;;;;;6523:34;;6528:28;6523:4;:34::i;:::-;6508:12;:49;6611:5;6586;6592:6;6586:13;;;;;;;;;;:30;;;;;;;;6652:5;6586:21;6633:6;6627:13;;;;;;;;;;:21;;;:30;;;;;;;;;;;6695:4;6668:5;6674:6;6668:13;;;;;;;;;;:23;;;:31;;;;;;;;;;;5473:1234;;;;;;;:::o;11162:346::-;11249:7;11243:13;11219:10;11267:11;:9;:11::i;:::-;11318:4;:13;11302:12;;11318:18;;;;11297:17;;11318:18;11297:40;;;;11348:4;:19;;;;;;11378:12;:21;;11297:40;;;;11378:21;;;;;;11297:40;-1:-1:-1;11365:2:20;11348:13;11430:6;11424:13;;;;;;;;;;:27;;;;;;;;11487:5;11424:21;11468:6;11462:13;;;;;;;;;;:21;;;:30;;;;;;;;;;;11162:346;;;;:::o;8696:691::-;8771:13;8786;8834:5;8840:6;8834:13;;;;;;;;;;:23;;;8820:10;:37;;8812:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8890:11;:9;:11::i;:::-;8965:14;;:4;8948:13;8933:29;;:10;;:14;:29::i;:::-;:46;;;;;9032:14;;9016:12;;8933:46;;;;;-1:-1:-1;9032:14:20;9001:28;;:10;;:14;:28::i;:::-;:45;;;;;;8990:56;;9094:10;9067:5;9073:6;9067:13;;;;;;;;;;:23;;:37;;;;;;;;9115:14;:28;;;;;;;9189:8;-1:-1:-1;9170:6:20;9164:13;;;;;;;;;;:33;;;;;;;9233:8;9164:21;9214:6;9208:13;;;;;;;;;;:21;;:33;;;;;;;;9254:4;:25;;;;;;;;;9290:12;:24;;;;;;;;;9341:34;;9346:28;9341:4;:34::i;:::-;9326:12;:49;8696:691;;;;-1:-1:-1;8696:691:20;-1:-1:-1;8696:691:20:o;2491:812::-;2568:12;;:4;2552:13;2530:14;;2547:34;;2552:28;2547:4;:34::i;:::-;2609:12;;2530:51;;-1:-1:-1;2597:24:20;;2592:704;;;2639:14;2656:56;2710:1;2656:49;2677:27;2691:4;:12;;;2677:9;:13;;:27;;;;:::i;:::-;2657:14;;;2656:20;:49::i;:::-;:53;;:56::i;:::-;2768:12;;2639:73;;-1:-1:-1;2727:16:20;;2746:35;;:17;:9;2760:2;2746:13;:17::i;:35::-;2727:54;-1:-1:-1;2796:21:20;2833:19;2727:54;2849:2;2833:15;:19::i;:::-;2820:9;:33;;;;;;;-1:-1:-1;2872:20:20;;2868:160;;2913:14;:34;;;;;;2966:26;:46;;;;;;2868:160;3043:23;3082:19;:11;3098:2;3082:15;:19::i;:::-;3069:9;:33;;;;;;;-1:-1:-1;3121:22:20;;3117:163;;3164:14;:36;;;;;;3219:23;:45;;;;;;3117:163;2592:704;;;;;2491:812;:::o;7967:714::-;8043:13;8058;8106:5;8112:6;8106:13;;;;;;;;;;:24;;;8092:10;:38;;8084:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8163:12;:10;:12::i;:::-;8241:15;;:7;8222:15;8207:31;;:10;;:14;:31::i;:::-;:49;;;;;8312:15;;8293;;8207:49;;;;;-1:-1:-1;8312:15:20;8278:31;;:10;;:14;:31::i;:::-;:49;;;;;;8267:60;;8376:10;8348:5;8354:6;8348:13;;;;;;;;;;:24;;:38;;;;;;;;8397:15;:29;;;;;;;8472:8;-1:-1:-1;8453:6:20;8447:13;;;;;;;;;;:33;;;;;;;8516:8;8447:21;8497:6;8491:13;;;;;;;;;;:21;;:33;;;;;;;;8537:7;:27;;;;;;;;;8575:15;:27;;;;;;;;;8630:39;;8635:33;8630:4;:39::i;:::-;8614:13;:55;7967:714;;;;-1:-1:-1;7967:714:20;-1:-1:-1;7967:714:20:o;9396:701::-;9471:13;9486;9534:5;9540:6;9534:13;;;;;;;;;;:23;;;9520:10;:37;;9512:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9600:11;:9;:11::i;:::-;9674:14;;9658:12;;9643:28;;:10;;:14;:28::i;:::-;:45;;;;;9742:14;;9725:13;;9643:45;;;;;-1:-1:-1;9742:14:20;9710:29;;:10;;:14;:29::i;:::-;:46;;;;;;9699:57;;9804:10;9777:5;9783:6;9777:13;;;;;;;;;;:23;;:37;;;;;;;;9825:14;:28;;;;;;;9899:8;-1:-1:-1;9880:6:20;9874:13;;;;;;;;;;:33;;;;;;;9943:8;9874:21;9924:6;9918:13;;;;;;;;;;:21;;:33;;;;;;;;9964:12;:24;;;;;;;;;9999:13;:25;;;;;;;;;10051:34;;10056:28;10051:4;:34::i;:::-;10036:12;:49;9396:701;;;;-1:-1:-1;9396:701:20;-1:-1:-1;9396:701:20:o;3315:812::-;3391:13;;3376:12;;3354:14;;3371:34;;3376:28;3371:4;:34::i;:::-;3433:12;;3354:51;;-1:-1:-1;3421:24:20;;3416:704;;;3463:14;3480:56;3534:1;3480:49;3501:27;3515:4;:12;;;3501:9;:13;;:27;;;;:::i;:::-;3481:14;;;3480:20;:49::i;:56::-;3592:12;;3463:73;;-1:-1:-1;3551:16:20;;3570:35;;:17;:9;3584:2;3570:13;:17::i;:35::-;3551:54;-1:-1:-1;3620:21:20;3657:19;3551:54;3673:2;3657:15;:19::i;:::-;3644:9;:33;;;;;;;-1:-1:-1;3696:20:20;;3692:160;;3737:14;:34;;;;;;3790:26;:46;;;;;;3692:160;3867:23;3906:19;:11;3922:2;3906:15;:19::i;:::-;3893:9;:33;;;;;;;-1:-1:-1;3945:22:20;;3941:163;;3988:14;:36;;;;;;4043:23;:45;;;;;;3416:704;;;;3315:812;:::o;11520:343::-;11607:7;11601:13;11577:10;11625:11;:9;:11::i;:::-;11676:13;;11660:12;;11676:18;;;;11655:17;;11676:18;11655:40;;;;11708:13;:19;;;;;;11738:12;:21;;11655:40;;;;11738:21;;;;;;11655:40;-1:-1:-1;11725:2:20;11708:13;11790:6;11784:13;;;;;;;;;;:21;;;:27;;;;;;;;;;;11847:5;11822;11828:6;11822:13;;;;;;;;;;:30;;;;;;;11520:343;;-1:-1:-1;;11520:343:20:o;4139:1324::-;4269:7;4263:13;;;;4287;4213:12;;;4321;:10;:12::i;:::-;4359:7;:15;:20;;4358:48;;-1:-1:-1;4385:15:20;;:20;4358:48;4354:767;;;4433:2;4423:12;;4460:2;4450:12;;4510:4;4484:23;4499:7;4489;:17;4484:4;:23::i;:::-;4547:4;4529:15;:22;4484:30;;-1:-1:-1;4354:767:20;;;4630:7;:15;4612;;4594:10;;4630:15;4607:20;;4630:15;4607:38;;;;;4594:51;;4660:10;4696:7;:15;;;4678:7;:15;;;4673:2;:20;:38;;;;;;4660:51;;4738:2;4729:5;:11;4726:196;;4770:2;4760:12;;4801:5;4791:15;;4726:196;;;4870:2;4860:12;;4901:5;4891:15;;4726:196;4978:7;:15;4960;;4936:11;;4978:15;4950:25;;4978:15;4950:43;;;;;4936:57;;5008:11;5050:7;:15;;;5032:7;:15;;;5022:7;:25;:43;;;;;;5008:57;;5090:19;5094:6;5102;5090:3;:19::i;:::-;5083:26;;4354:767;;;;;5141:7;:26;;;;;;;;5178:15;:26;;;;;;;;5216:15;:23;;;;;;5269:39;;5274:33;5269:4;:39::i;:::-;5253:13;:55;5362:7;5337:5;5343:6;5337:13;;;;;;;;;;:32;;;;;;;;5405:7;5337:21;5386:6;5380:13;;;;;;;;;;:21;;;:32;;;;;;;;;;;5451:4;5423:5;5429:6;5423:13;;;;;;;;;;:24;;;:32;;;;;;;;;;;4139:1324;;;;;;;:::o;10640:510::-;10730:7;10724:13;10700:10;;10781:11;10724:13;10788:3;10781:6;:11::i;:::-;10840:7;:15;10758:34;;-1:-1:-1;10803:14:20;;10820:36;;10758:34;;10820:19;:36::i;:::-;10803:53;;10867:16;10886:48;10918:15;10886:27;10908:4;10887:7;:15;;;10886:21;;:27;;;;:::i;:48::-;10867:67;;10965:11;10953:9;:23;;;;;10997:15;:21;;;;;;:7;11029:24;;10953:23;;;;11029:24;;;;;;10953:23;-1:-1:-1;11016:2:20;10997:15;11080:6;11074:13;;;;;;;;;;:21;;;:27;;;;;;;;;;;11137:5;11112;11118:6;11112:13;;;;;;;;;;:30;;;;;;;-1:-1:-1;10640:510:20;;;-1:-1:-1;;;;10640:510:20:o;1962:521::-;2042:15;;:7;2024:15;2002:14;;2019:39;;2024:33;2019:4;:39::i;:::-;2086:13;;2002:56;;-1:-1:-1;2074:25:20;;2069:407;;;2170:13;;2117:14;;2134:51;;2156:28;;:9;;:13;:28::i;:::-;2135:15;;;2134:21;:51::i;:::-;2240:13;;2117:68;;-1:-1:-1;2200:16:20;;2219:35;;:16;:9;2233:1;2219:13;:16::i;:35::-;2200:54;;2269:16;2300:11;2288:9;:23;;;;;;;-1:-1:-1;2330:15:20;;2326:138;;2366:15;:30;;;;;;2415:18;:33;;;;;;2326:138;2069:407;;;1962:521;:::o;1406:23::-;;;;;;;;;;;;:::o;12737:303::-;12782:6;12809:1;12805;:5;12801:232;;;-1:-1:-1;12831:1:20;12864;12860;12856:5;;:9;12880:92;12891:1;12887;:5;12880:92;;;12917:1;12913:5;;12955:1;12950;12946;12942;:5;;;;;;:9;12941:15;;;;;;12937:19;;12880:92;;;12801:232;;;;12993:6;;12989:44;;-1:-1:-1;13020:1:20;12989:44;12737:303;;;:::o;12523:96::-;12575:6;12602:1;12598;:5;:13;;12610:1;12598:13;;;12606:1;12598:13;12594:17;12523:96;-1:-1:-1;;;12523:96:20:o;362:142::-;414:6;441;;;:30;;-1:-1:-1;;456:5:20;;;470:1;465;456:5;465:1;451:15;;;;;:20;441:30;433:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;362:142;;;;:::o;89:128::-;173:5;;;168:16;;;;160:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;225:129;309:5;;;304:16;;;;296:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"nTokenA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nTokenB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nA\",\"type\":\"uint256\"}],\"name\":\"SwapAB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nOutB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nA\",\"type\":\"uint256\"}],\"name\":\"SwapABUni\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nOutB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nB\",\"type\":\"uint256\"}],\"name\":\"SwapBA\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nOutA\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nB\",\"type\":\"uint256\"}],\"name\":\"SwapBAUni\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nOutA\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nB\",\"type\":\"uint256\"}],\"name\":\"addLiquidityAB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nOutA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nOutB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpAB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nB\",\"type\":\"uint256\"}],\"name\":\"addLiquidityBA\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nOutA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nOutB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpBA\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nB\",\"type\":\"uint256\"}],\"name\":\"addLiquidityUni\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nAddedA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nAddedB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"lpAB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"arbitrage\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mineFeeAB\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mineFeeBA\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"mineFeeUni\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"pool\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"AmountAA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"AmountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"AmountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"AmountBB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"LiquityAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"LiquityBA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"KLastAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"KLastBA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeLiquidityPoolAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeLiquidityCreatorAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeLiquidityPoolBA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeLiquidityCreatorBA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"arbitrageTime\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"poolUni\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"AmountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"AmountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"Liquity\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"KLast\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"feeUniPool\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nLiquidity\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityAB\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nRemoveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nRemoveB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nLiquidity\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityBA\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nRemoveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nRemoveB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"userID\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nLiquidity\",\"type\":\"uint256\"}],\"name\":\"removeLiquidityUni\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"nRemoveA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"nRemoveB\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"name\":\"users\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"amountA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquityAB\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquityBA\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"liquityUni\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/simu/FeSwapSimu.sol\":\"FeSwapSimu\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/simu/FeSwapSimu.sol\":{\"keccak256\":\"0xf249ed0efa90c4074974a243079c01212f62372cf45e9dde173028cb43d0ada3\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://52a30051b6963126f94b53464fa7bc3c234b6e4665365fb893d0ded4c84fa3b8\",\"dweb:/ipfs/QmNu3RKmeshA6hQpMs2NdGneENk8ccHU4R3hgMhUsSgC1x\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b5060405161142e38038061142e8339818101604052604081101561003357600080fd5b50805160209091015160005b60198110156100955782670de0b6b3a7640000026000826019811061006057fe5b6005020155670de0b6b3a764000082026000826019811061007d57fe5b6005020160010181905550808060010191505061003f565b505050611387806100a76000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063a5267dc6116100b2578063cc0478f411610081578063ef31c6b711610066578063ef31c6b714610385578063f1a7af9f146103a8578063fec9af02146103b05761011b565b8063cc0478f414610339578063dee169271461035c5761011b565b8063a5267dc6146102e3578063afec93db146102eb578063c2dc0b651461030e578063c4575f93146103315761011b565b806369c8d338116100ee57806369c8d338146102515780636c95361d1461025b578063716445a8146102845780639b0ae61b146102a75761011b565b806316f0115b14610120578063312f0ac31461018d578063365b98b2146101d457806346c913621461021c575b600080fd5b6101286103b8565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b6101b6600480360360608110156101a357600080fd5b50803590602081013590604001356103e2565b60408051938452602084019290925282820152519081900360600190f35b6101f1600480360360208110156101ea57600080fd5b503561054c565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b61023f6004803603604081101561023257600080fd5b508035906020013561057e565b60408051918252519081900360200190f35b61025961063b565b005b6101b66004803603606081101561027157600080fd5b50803590602081013590604001356106cc565b61023f6004803603604081101561029a57600080fd5b5080359060200135610836565b6102ca600480360360408110156102bd57600080fd5b50803590602001356108b7565b6040805192835260208301919091528051918290030190f35b610259610a07565b6102ca6004803603604081101561030157600080fd5b5080359060200135610ad8565b6102ca6004803603604081101561032457600080fd5b5080359060200135610c28565b610259610d78565b61023f6004803603604081101561034f57600080fd5b5080359060200135610e41565b6101b66004803603606081101561037257600080fd5b5080359060208101359060400135610ec1565b61023f6004803603604081101561039b57600080fd5b508035906020013561102b565b6102596110e2565b6101f1611165565b607d54607e54607f546080546081546082546083546084546085546086546087546088546089548d565b670de0b6b3a76400009182029102600080806103fc610d78565b607f54158061040b5750608054155b15610432578492508391506103e8610424838502611177565b6103e86082550390506104bc565b607f546080546000919087028161044557fe5b0490506000607d60030154607d6002015487028161045f57fe5b0490508582116104745786945081935061047b565b8593508094505b607f546082546000919087028161048e57fe5b0490506000607d60030154607d600501548702816104a857fe5b0490506104b582826111c9565b9450505050505b607f80548401908190556080805484019081905560828054840190556104e29102611177565b60845582600087601981106104f357fe5b600502018054919091039055816000876019811061050d57fe5b6005020160010160008282540392505081905550806000876019811061052f57fe5b600502016003016000828254019250508190555093509350939050565b6000816019811061055957fe5b6005020180546001820154600283015460038401546004909401549294509092909185565b670de0b6b3a764000002600080610597836103e56111e1565b608b549091506000906105ab9083906111e1565b905060006105d3836105cd6103e8608a600001546111e190919063ffffffff16565b9061126d565b90508082816105de57fe5b608a805488019055608b8054929091049182900390559350846000876019811061060457fe5b600502018054919091039055836000876019811061061e57fe5b600502016001016000828254019250508190555050505092915050565b608054607d54607e54607f549190920291026103f281026103e88302106106c857608054607e54600091016002028284038161067357fe5b0490506000607d60000154607d60020154016002028385038161069257fe5b607d80548590039055607f805490940190935560808054919093049081900390925550607e805490910190556089805460010190555b5050565b670de0b6b3a76400009182029102600080806106e6610a07565b607d5415806106f55750607e54155b1561071c578492508391506103e861070e838502611177565b6103e86081550390506107a6565b607d54607e546000919087028161072f57fe5b0490506000607d60010154607d6000015487028161074957fe5b04905085821161075e57869450819350610765565b8593508094505b607d546081546000919087028161077857fe5b0490506000607d60010154607d6004015487028161079257fe5b04905061079f82826111c9565b9450505050505b607d8054840190819055607e805484019081905560818054840190556107cc9102611177565b60835582600087601981106107dd57fe5b60050201805491909103905581600087601981106107f757fe5b6005020160010160008282540392505081905550806000876019811061081957fe5b600502016002016000828254019250508190555093509350939050565b670de0b6b3a764000002600061084a61063b565b607d54607e549083019083028161085d57fe5b607d805485019055607e8054929091049182900390559050816000846019811061088357fe5b600502018054919091039055806000846019811061089d57fe5b600502016001016000828254019250508190555092915050565b600080600084601981106108c757fe5b600502016002015483111561093d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610945610a07565b608154607d546109569085906111e1565b8161095d57fe5b608154607e54929091049350906109759085906111e1565b8161097c57fe5b049050826000856019811061098d57fe5b60050201600201805491909103905560818054849003905581600085601981106109b357fe5b600502018054909101905580600085601981106109cc57fe5b600502016001018054919091019055607d805483900390819055607e8054839003908190556109fb9102611177565b60835590939092509050565b607e54607d54600091610a1a9102611177565b608354909150811115610ad5576000610a586006610a52610a49607d60060154866112df90919063ffffffff16565b608154906111e1565b906111e1565b608354909150600090610a70906105cd85600b6111e1565b90506000610a7f82600a6111e1565b8381610a8757fe5b0490508015610aa157608180548201905560868054820190555b6000610aae83600f6111e1565b8481610ab657fe5b0490508015610ad057608180548201905560858054820190555b505050505b50565b60008060008460198110610ae857fe5b6005020160040154831115610b5e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610b666110e2565b608c54608a54610b779085906111e1565b81610b7e57fe5b608c54608b5492909104935090610b969085906111e1565b81610b9d57fe5b0490508260008560198110610bae57fe5b600502016004018054919091039055608c805484900390558160008560198110610bd457fe5b60050201805490910190558060008560198110610bed57fe5b600502016001018054919091019055608a805483900390819055608b805483900390819055610c1c9102611177565b608d5590939092509050565b60008060008460198110610c3857fe5b6005020160030154831115610cae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610cb6610d78565b608254607f54610cc79085906111e1565b81610cce57fe5b60825460805492909104935090610ce69085906111e1565b81610ced57fe5b0490508260008560198110610cfe57fe5b6005020160030180549190910390556082805484900390558160008560198110610d2457fe5b60050201805490910190558060008560198110610d3d57fe5b600502016001018054919091019055607f8054839003908190556080805483900390819055610d6c9102611177565b60845590939092509050565b608054607f54600091610d8b9102611177565b608454909150811115610ad5576000610dc36006610a52610dba607d60070154866112df90919063ffffffff16565b608254906111e1565b608454909150600090610ddb906105cd85600b6111e1565b90506000610dea82600a6111e1565b8381610df257fe5b0490508015610e0c57608280548201905560888054820190555b6000610e1983600f6111e1565b8481610e2157fe5b0490508015610ad057608280548201905560878054820190555050505050565b670de0b6b3a7640000026000610e5561063b565b608054607f5490830190830281610e6857fe5b6080805485019055607f80549290910491829003905590508160008460198110610e8e57fe5b60050201600101600082825403925050819055508060008460198110610eb057fe5b600502018054909101905592915050565b670de0b6b3a7640000918202910260008080610edb6110e2565b608a541580610eea5750608b54155b15610f11578492508391506103e8610f03838502611177565b6103e8608c55039050610f9b565b608a54608b5460009190870281610f2457fe5b0490506000608a60010154608a60000154870281610f3e57fe5b049050858211610f5357869450819350610f5a565b8593508094505b608a54608c5460009190870281610f6d57fe5b0490506000608a60010154608a60020154870281610f8757fe5b049050610f9482826111c9565b9450505050505b608a8054840190819055608b8054840190819055608c805484019055610fc19102611177565b608d558260008760198110610fd257fe5b6005020180549190910390558160008760198110610fec57fe5b6005020160010160008282540392505081905550806000876019811061100e57fe5b600502016004016000828254019250508190555093509350939050565b670de0b6b3a764000002600080611044836103e56111e1565b608a549091506000906110589083906111e1565b9050600061107a836105cd6103e8608a600101546111e190919063ffffffff16565b905080828161108557fe5b608b805488019055608a805492909104918290039055935084600087601981106110ab57fe5b600502016001016000828254039250508190555083600087601981106110cd57fe5b60050201805490910190555091949350505050565b608b54608a546000916110f59102611177565b608d54909150811115610ad557608d54600090611120906111179084906112df565b608c54906111e1565b608d54909150600090611138906105cd8560056111e1565b9050600081838161114557fe5b049050801561115f57608c805482019055608e8054820190555b50505050565b608a54608b54608c54608d54608e5485565b600060038211156111ba575080600160028204015b818110156111b4578091506002818285816111a357fe5b0401816111ac57fe5b04905061118c565b506111c4565b81156111c4575060015b919050565b60008183106111d857816111da565b825b9392505050565b60008115806111fc575050808202828282816111f957fe5b04145b61126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b8082018281101561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfea264697066735822122055dbaae7f8dea417e4afea48bdcdc0250722f9c724fa6db2799aaef76075f23a64736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b5060405161142e38038061142e8339818101604052604081101561003357600080fd5b50805160209091015160005b60198110156100955782670de0b6b3a7640000026000826019811061006057fe5b6005020155670de0b6b3a764000082026000826019811061007d57fe5b6005020160010181905550808060010191505061003f565b505050611387806100a76000396000f3fe608060405234801561001057600080fd5b506004361061011b5760003560e01c8063a5267dc6116100b2578063cc0478f411610081578063ef31c6b711610066578063ef31c6b714610385578063f1a7af9f146103a8578063fec9af02146103b05761011b565b8063cc0478f414610339578063dee169271461035c5761011b565b8063a5267dc6146102e3578063afec93db146102eb578063c2dc0b651461030e578063c4575f93146103315761011b565b806369c8d338116100ee57806369c8d338146102515780636c95361d1461025b578063716445a8146102845780639b0ae61b146102a75761011b565b806316f0115b14610120578063312f0ac31461018d578063365b98b2146101d457806346c913621461021c575b600080fd5b6101286103b8565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b6101b6600480360360608110156101a357600080fd5b50803590602081013590604001356103e2565b60408051938452602084019290925282820152519081900360600190f35b6101f1600480360360208110156101ea57600080fd5b503561054c565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b61023f6004803603604081101561023257600080fd5b508035906020013561057e565b60408051918252519081900360200190f35b61025961063b565b005b6101b66004803603606081101561027157600080fd5b50803590602081013590604001356106cc565b61023f6004803603604081101561029a57600080fd5b5080359060200135610836565b6102ca600480360360408110156102bd57600080fd5b50803590602001356108b7565b6040805192835260208301919091528051918290030190f35b610259610a07565b6102ca6004803603604081101561030157600080fd5b5080359060200135610ad8565b6102ca6004803603604081101561032457600080fd5b5080359060200135610c28565b610259610d78565b61023f6004803603604081101561034f57600080fd5b5080359060200135610e41565b6101b66004803603606081101561037257600080fd5b5080359060208101359060400135610ec1565b61023f6004803603604081101561039b57600080fd5b508035906020013561102b565b6102596110e2565b6101f1611165565b607d54607e54607f546080546081546082546083546084546085546086546087546088546089548d565b670de0b6b3a76400009182029102600080806103fc610d78565b607f54158061040b5750608054155b15610432578492508391506103e8610424838502611177565b6103e86082550390506104bc565b607f546080546000919087028161044557fe5b0490506000607d60030154607d6002015487028161045f57fe5b0490508582116104745786945081935061047b565b8593508094505b607f546082546000919087028161048e57fe5b0490506000607d60030154607d600501548702816104a857fe5b0490506104b582826111c9565b9450505050505b607f80548401908190556080805484019081905560828054840190556104e29102611177565b60845582600087601981106104f357fe5b600502018054919091039055816000876019811061050d57fe5b6005020160010160008282540392505081905550806000876019811061052f57fe5b600502016003016000828254019250508190555093509350939050565b6000816019811061055957fe5b6005020180546001820154600283015460038401546004909401549294509092909185565b670de0b6b3a764000002600080610597836103e56111e1565b608b549091506000906105ab9083906111e1565b905060006105d3836105cd6103e8608a600001546111e190919063ffffffff16565b9061126d565b90508082816105de57fe5b608a805488019055608b8054929091049182900390559350846000876019811061060457fe5b600502018054919091039055836000876019811061061e57fe5b600502016001016000828254019250508190555050505092915050565b608054607d54607e54607f549190920291026103f281026103e88302106106c857608054607e54600091016002028284038161067357fe5b0490506000607d60000154607d60020154016002028385038161069257fe5b607d80548590039055607f805490940190935560808054919093049081900390925550607e805490910190556089805460010190555b5050565b670de0b6b3a76400009182029102600080806106e6610a07565b607d5415806106f55750607e54155b1561071c578492508391506103e861070e838502611177565b6103e86081550390506107a6565b607d54607e546000919087028161072f57fe5b0490506000607d60010154607d6000015487028161074957fe5b04905085821161075e57869450819350610765565b8593508094505b607d546081546000919087028161077857fe5b0490506000607d60010154607d6004015487028161079257fe5b04905061079f82826111c9565b9450505050505b607d8054840190819055607e805484019081905560818054840190556107cc9102611177565b60835582600087601981106107dd57fe5b60050201805491909103905581600087601981106107f757fe5b6005020160010160008282540392505081905550806000876019811061081957fe5b600502016002016000828254019250508190555093509350939050565b670de0b6b3a764000002600061084a61063b565b607d54607e549083019083028161085d57fe5b607d805485019055607e8054929091049182900390559050816000846019811061088357fe5b600502018054919091039055806000846019811061089d57fe5b600502016001016000828254019250508190555092915050565b600080600084601981106108c757fe5b600502016002015483111561093d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610945610a07565b608154607d546109569085906111e1565b8161095d57fe5b608154607e54929091049350906109759085906111e1565b8161097c57fe5b049050826000856019811061098d57fe5b60050201600201805491909103905560818054849003905581600085601981106109b357fe5b600502018054909101905580600085601981106109cc57fe5b600502016001018054919091019055607d805483900390819055607e8054839003908190556109fb9102611177565b60835590939092509050565b607e54607d54600091610a1a9102611177565b608354909150811115610ad5576000610a586006610a52610a49607d60060154866112df90919063ffffffff16565b608154906111e1565b906111e1565b608354909150600090610a70906105cd85600b6111e1565b90506000610a7f82600a6111e1565b8381610a8757fe5b0490508015610aa157608180548201905560868054820190555b6000610aae83600f6111e1565b8481610ab657fe5b0490508015610ad057608180548201905560858054820190555b505050505b50565b60008060008460198110610ae857fe5b6005020160040154831115610b5e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610b666110e2565b608c54608a54610b779085906111e1565b81610b7e57fe5b608c54608b5492909104935090610b969085906111e1565b81610b9d57fe5b0490508260008560198110610bae57fe5b600502016004018054919091039055608c805484900390558160008560198110610bd457fe5b60050201805490910190558060008560198110610bed57fe5b600502016001018054919091019055608a805483900390819055608b805483900390819055610c1c9102611177565b608d5590939092509050565b60008060008460198110610c3857fe5b6005020160030154831115610cae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610cb6610d78565b608254607f54610cc79085906111e1565b81610cce57fe5b60825460805492909104935090610ce69085906111e1565b81610ced57fe5b0490508260008560198110610cfe57fe5b6005020160030180549190910390556082805484900390558160008560198110610d2457fe5b60050201805490910190558060008560198110610d3d57fe5b600502016001018054919091019055607f8054839003908190556080805483900390819055610d6c9102611177565b60845590939092509050565b608054607f54600091610d8b9102611177565b608454909150811115610ad5576000610dc36006610a52610dba607d60070154866112df90919063ffffffff16565b608254906111e1565b608454909150600090610ddb906105cd85600b6111e1565b90506000610dea82600a6111e1565b8381610df257fe5b0490508015610e0c57608280548201905560888054820190555b6000610e1983600f6111e1565b8481610e2157fe5b0490508015610ad057608280548201905560878054820190555050505050565b670de0b6b3a7640000026000610e5561063b565b608054607f5490830190830281610e6857fe5b6080805485019055607f80549290910491829003905590508160008460198110610e8e57fe5b60050201600101600082825403925050819055508060008460198110610eb057fe5b600502018054909101905592915050565b670de0b6b3a7640000918202910260008080610edb6110e2565b608a541580610eea5750608b54155b15610f11578492508391506103e8610f03838502611177565b6103e8608c55039050610f9b565b608a54608b5460009190870281610f2457fe5b0490506000608a60010154608a60000154870281610f3e57fe5b049050858211610f5357869450819350610f5a565b8593508094505b608a54608c5460009190870281610f6d57fe5b0490506000608a60010154608a60020154870281610f8757fe5b049050610f9482826111c9565b9450505050505b608a8054840190819055608b8054840190819055608c805484019055610fc19102611177565b608d558260008760198110610fd257fe5b6005020180549190910390558160008760198110610fec57fe5b6005020160010160008282540392505081905550806000876019811061100e57fe5b600502016004016000828254019250508190555093509350939050565b670de0b6b3a764000002600080611044836103e56111e1565b608a549091506000906110589083906111e1565b9050600061107a836105cd6103e8608a600101546111e190919063ffffffff16565b905080828161108557fe5b608b805488019055608a805492909104918290039055935084600087601981106110ab57fe5b600502016001016000828254039250508190555083600087601981106110cd57fe5b60050201805490910190555091949350505050565b608b54608a546000916110f59102611177565b608d54909150811115610ad557608d54600090611120906111179084906112df565b608c54906111e1565b608d54909150600090611138906105cd8560056111e1565b9050600081838161114557fe5b049050801561115f57608c805482019055608e8054820190555b50505050565b608a54608b54608c54608d54608e5485565b600060038211156111ba575080600160028204015b818110156111b4578091506002818285816111a357fe5b0401816111ac57fe5b04905061118c565b506111c4565b81156111c4575060015b919050565b60008183106111d857816111da565b825b9392505050565b60008115806111fc575050808202828282816111f957fe5b04145b61126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b8082018281101561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfea264697066735822122055dbaae7f8dea417e4afea48bdcdc0250722f9c724fa6db2799aaef76075f23a64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b506004361061011b5760003560e01c8063a5267dc6116100b2578063cc0478f411610081578063ef31c6b711610066578063ef31c6b714610385578063f1a7af9f146103a8578063fec9af02146103b05761011b565b8063cc0478f414610339578063dee169271461035c5761011b565b8063a5267dc6146102e3578063afec93db146102eb578063c2dc0b651461030e578063c4575f93146103315761011b565b806369c8d338116100ee57806369c8d338146102515780636c95361d1461025b578063716445a8146102845780639b0ae61b146102a75761011b565b806316f0115b14610120578063312f0ac31461018d578063365b98b2146101d457806346c913621461021c575b600080fd5b6101286103b8565b604080519d8e5260208e019c909c528c8c019a909a5260608c019890985260808b019690965260a08a019490945260c089019290925260e088015261010087015261012086015261014085015261016084015261018083015251908190036101a00190f35b6101b6600480360360608110156101a357600080fd5b50803590602081013590604001356103e2565b60408051938452602084019290925282820152519081900360600190f35b6101f1600480360360208110156101ea57600080fd5b503561054c565b6040805195865260208601949094528484019290925260608401526080830152519081900360a00190f35b61023f6004803603604081101561023257600080fd5b508035906020013561057e565b60408051918252519081900360200190f35b61025961063b565b005b6101b66004803603606081101561027157600080fd5b50803590602081013590604001356106cc565b61023f6004803603604081101561029a57600080fd5b5080359060200135610836565b6102ca600480360360408110156102bd57600080fd5b50803590602001356108b7565b6040805192835260208301919091528051918290030190f35b610259610a07565b6102ca6004803603604081101561030157600080fd5b5080359060200135610ad8565b6102ca6004803603604081101561032457600080fd5b5080359060200135610c28565b610259610d78565b61023f6004803603604081101561034f57600080fd5b5080359060200135610e41565b6101b66004803603606081101561037257600080fd5b5080359060208101359060400135610ec1565b61023f6004803603604081101561039b57600080fd5b508035906020013561102b565b6102596110e2565b6101f1611165565b607d54607e54607f546080546081546082546083546084546085546086546087546088546089548d565b670de0b6b3a76400009182029102600080806103fc610d78565b607f54158061040b5750608054155b15610432578492508391506103e8610424838502611177565b6103e86082550390506104bc565b607f546080546000919087028161044557fe5b0490506000607d60030154607d6002015487028161045f57fe5b0490508582116104745786945081935061047b565b8593508094505b607f546082546000919087028161048e57fe5b0490506000607d60030154607d600501548702816104a857fe5b0490506104b582826111c9565b9450505050505b607f80548401908190556080805484019081905560828054840190556104e29102611177565b60845582600087601981106104f357fe5b600502018054919091039055816000876019811061050d57fe5b6005020160010160008282540392505081905550806000876019811061052f57fe5b600502016003016000828254019250508190555093509350939050565b6000816019811061055957fe5b6005020180546001820154600283015460038401546004909401549294509092909185565b670de0b6b3a764000002600080610597836103e56111e1565b608b549091506000906105ab9083906111e1565b905060006105d3836105cd6103e8608a600001546111e190919063ffffffff16565b9061126d565b90508082816105de57fe5b608a805488019055608b8054929091049182900390559350846000876019811061060457fe5b600502018054919091039055836000876019811061061e57fe5b600502016001016000828254019250508190555050505092915050565b608054607d54607e54607f549190920291026103f281026103e88302106106c857608054607e54600091016002028284038161067357fe5b0490506000607d60000154607d60020154016002028385038161069257fe5b607d80548590039055607f805490940190935560808054919093049081900390925550607e805490910190556089805460010190555b5050565b670de0b6b3a76400009182029102600080806106e6610a07565b607d5415806106f55750607e54155b1561071c578492508391506103e861070e838502611177565b6103e86081550390506107a6565b607d54607e546000919087028161072f57fe5b0490506000607d60010154607d6000015487028161074957fe5b04905085821161075e57869450819350610765565b8593508094505b607d546081546000919087028161077857fe5b0490506000607d60010154607d6004015487028161079257fe5b04905061079f82826111c9565b9450505050505b607d8054840190819055607e805484019081905560818054840190556107cc9102611177565b60835582600087601981106107dd57fe5b60050201805491909103905581600087601981106107f757fe5b6005020160010160008282540392505081905550806000876019811061081957fe5b600502016002016000828254019250508190555093509350939050565b670de0b6b3a764000002600061084a61063b565b607d54607e549083019083028161085d57fe5b607d805485019055607e8054929091049182900390559050816000846019811061088357fe5b600502018054919091039055806000846019811061089d57fe5b600502016001016000828254019250508190555092915050565b600080600084601981106108c757fe5b600502016002015483111561093d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610945610a07565b608154607d546109569085906111e1565b8161095d57fe5b608154607e54929091049350906109759085906111e1565b8161097c57fe5b049050826000856019811061098d57fe5b60050201600201805491909103905560818054849003905581600085601981106109b357fe5b600502018054909101905580600085601981106109cc57fe5b600502016001018054919091019055607d805483900390819055607e8054839003908190556109fb9102611177565b60835590939092509050565b607e54607d54600091610a1a9102611177565b608354909150811115610ad5576000610a586006610a52610a49607d60060154866112df90919063ffffffff16565b608154906111e1565b906111e1565b608354909150600090610a70906105cd85600b6111e1565b90506000610a7f82600a6111e1565b8381610a8757fe5b0490508015610aa157608180548201905560868054820190555b6000610aae83600f6111e1565b8481610ab657fe5b0490508015610ad057608180548201905560858054820190555b505050505b50565b60008060008460198110610ae857fe5b6005020160040154831115610b5e57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610b666110e2565b608c54608a54610b779085906111e1565b81610b7e57fe5b608c54608b5492909104935090610b969085906111e1565b81610b9d57fe5b0490508260008560198110610bae57fe5b600502016004018054919091039055608c805484900390558160008560198110610bd457fe5b60050201805490910190558060008560198110610bed57fe5b600502016001018054919091019055608a805483900390819055608b805483900390819055610c1c9102611177565b608d5590939092509050565b60008060008460198110610c3857fe5b6005020160030154831115610cae57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f4e6f2073756368204c6971756964697479000000000000000000000000000000604482015290519081900360640190fd5b610cb6610d78565b608254607f54610cc79085906111e1565b81610cce57fe5b60825460805492909104935090610ce69085906111e1565b81610ced57fe5b0490508260008560198110610cfe57fe5b6005020160030180549190910390556082805484900390558160008560198110610d2457fe5b60050201805490910190558060008560198110610d3d57fe5b600502016001018054919091019055607f8054839003908190556080805483900390819055610d6c9102611177565b60845590939092509050565b608054607f54600091610d8b9102611177565b608454909150811115610ad5576000610dc36006610a52610dba607d60070154866112df90919063ffffffff16565b608254906111e1565b608454909150600090610ddb906105cd85600b6111e1565b90506000610dea82600a6111e1565b8381610df257fe5b0490508015610e0c57608280548201905560888054820190555b6000610e1983600f6111e1565b8481610e2157fe5b0490508015610ad057608280548201905560878054820190555050505050565b670de0b6b3a7640000026000610e5561063b565b608054607f5490830190830281610e6857fe5b6080805485019055607f80549290910491829003905590508160008460198110610e8e57fe5b60050201600101600082825403925050819055508060008460198110610eb057fe5b600502018054909101905592915050565b670de0b6b3a7640000918202910260008080610edb6110e2565b608a541580610eea5750608b54155b15610f11578492508391506103e8610f03838502611177565b6103e8608c55039050610f9b565b608a54608b5460009190870281610f2457fe5b0490506000608a60010154608a60000154870281610f3e57fe5b049050858211610f5357869450819350610f5a565b8593508094505b608a54608c5460009190870281610f6d57fe5b0490506000608a60010154608a60020154870281610f8757fe5b049050610f9482826111c9565b9450505050505b608a8054840190819055608b8054840190819055608c805484019055610fc19102611177565b608d558260008760198110610fd257fe5b6005020180549190910390558160008760198110610fec57fe5b6005020160010160008282540392505081905550806000876019811061100e57fe5b600502016004016000828254019250508190555093509350939050565b670de0b6b3a764000002600080611044836103e56111e1565b608a549091506000906110589083906111e1565b9050600061107a836105cd6103e8608a600101546111e190919063ffffffff16565b905080828161108557fe5b608b805488019055608a805492909104918290039055935084600087601981106110ab57fe5b600502016001016000828254039250508190555083600087601981106110cd57fe5b60050201805490910190555091949350505050565b608b54608a546000916110f59102611177565b608d54909150811115610ad557608d54600090611120906111179084906112df565b608c54906111e1565b608d54909150600090611138906105cd8560056111e1565b9050600081838161114557fe5b049050801561115f57608c805482019055608e8054820190555b50505050565b608a54608b54608c54608d54608e5485565b600060038211156111ba575080600160028204015b818110156111b4578091506002818285816111a357fe5b0401816111ac57fe5b04905061118c565b506111c4565b81156111c4575060015b919050565b60008183106111d857816111da565b825b9392505050565b60008115806111fc575050808202828282816111f957fe5b04145b61126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6d756c2d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b8082018281101561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b8082038281111561126757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fdfea264697066735822122055dbaae7f8dea417e4afea48bdcdc0250722f9c724fa6db2799aaef76075f23a64736f6c634300060c0033",
      "srcmap": "511:12532:20:-:0;;;1442:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1442:512:20;;;;;;;1505:6;1500:152;1517:2;1515:1;:4;1500:152;;;1560:7;1570;1560:17;1541:5;1547:1;1541:8;;;;;;;;;;:36;1621:7;1611:17;;1541:16;1598:1;1592:8;;;;;;;;;;:16;;:36;;;;1521:3;;;;;;;1500:152;;;;1442:512;;511:12532;;;;;;",
      "srcmap-runtime": "511:12532:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1379:20;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6719:1236;;;;;;;;;;;;;;;;-1:-1:-1;6719:1236:20;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;1351:21;;;;;;;;;;;;;;;;-1:-1:-1;1351:21:20;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10114:514;;;;;;;;;;;;;;;;-1:-1:-1;10114:514:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;11875:633;;;:::i;:::-;;5473:1234;;;;;;;;;;;;;;;;-1:-1:-1;5473:1234:20;;;;;;;;;;;;:::i;11162:346::-;;;;;;;;;;;;;;;;-1:-1:-1;11162:346:20;;;;;;;:::i;8696:691::-;;;;;;;;;;;;;;;;-1:-1:-1;8696:691:20;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2491:812;;;:::i;7967:714::-;;;;;;;;;;;;;;;;-1:-1:-1;7967:714:20;;;;;;;:::i;9396:701::-;;;;;;;;;;;;;;;;-1:-1:-1;9396:701:20;;;;;;;:::i;3315:812::-;;;:::i;11520:343::-;;;;;;;;;;;;;;;;-1:-1:-1;11520:343:20;;;;;;;:::i;4139:1324::-;;;;;;;;;;;;;;;;-1:-1:-1;4139:1324:20;;;;;;;;;;;;:::i;10640:510::-;;;;;;;;;;;;;;;;-1:-1:-1;10640:510:20;;;;;;;:::i;1962:521::-;;;:::i;1406:23::-;;;:::i;1379:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;6719:1236::-;6844:7;6838:13;;;;6862;6792:10;;;6896:11;:9;:11::i;:::-;6923:12;;:17;;6922:43;;-1:-1:-1;6946:13:20;;:18;6922:43;6918:724;;;6990:2;6982:10;;7015:2;7007:10;;7061:4;7039:19;7052:5;7044;:13;7039:4;:19::i;:::-;7097:4;7080:14;:21;7039:26;;-1:-1:-1;6918:724:20;;;7178:12;;7162:13;;7144:10;;7178:12;7157:18;;7178:12;7157:33;;;;;7144:46;;7205:10;7238:4;:13;;;7223:4;:12;;;7218:2;:17;:33;;;;;;7205:46;;7278:2;7269:5;:11;7266:188;;7308:2;7300:10;;7337:5;7329:13;;7266:188;;;7404:2;7396:10;;7433:5;7425:13;;7266:188;7507:12;;7490:14;;7468:11;;7507:12;7482:22;;7507:12;7482:37;;;;;7468:51;;7534:11;7573:4;:13;;;7556:4;:14;;;7548:5;:22;:38;;;;;;7534:52;;7611:19;7615:6;7623;7611:3;:19::i;:::-;7604:26;;6918:724;;;;;7656:12;:21;;;;;;;;7688:13;:22;;;;;;;;7722:14;:22;;;;;;7770:34;;7775:28;7770:4;:34::i;:::-;7755:12;:49;7859:5;7834;7840:6;7834:13;;;;;;;;;;:30;;;;;;;;7900:5;7834:21;7881:6;7875:13;;;;;;;;;;:21;;;:30;;;;;;;;;;;7943:4;7916:5;7922:6;7916:13;;;;;;;;;;:23;;;:31;;;;;;;;;;;6719:1236;;;;;;;:::o;1351:21::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1351:21:20;;;;;:::o;10114:514::-;10204:7;10198:13;10174:10;;10255:11;10198:13;10262:3;10255:6;:11::i;:::-;10314:15;;10232:34;;-1:-1:-1;10277:14:20;;10294:36;;10232:34;;10294:19;:36::i;:::-;10277:53;;10341:16;10360:48;10392:15;10360:27;10382:4;10361:7;:15;;;10360:21;;:27;;;;:::i;:::-;:31;;:48::i;:::-;10341:67;;10439:11;10427:9;:23;;;;;10463:7;:21;;;;;;10495:15;:24;;10427:23;;;;10495:24;;;;;;10427:23;-1:-1:-1;10482:2:20;10463:15;10550:6;10544:13;;;;;;;;;;:27;;;;;;;;10607:5;10544:21;10588:6;10582:13;;;;;;;;;;:21;;;:30;;;;;;;;;;;10114:514;;;;;;;:::o;11875:633::-;11947:13;;:4;11931:13;12003:12;;11988;;11931:29;;;;;11988:27;12064:4;12052:16;;12042:4;12031:15;;12030:39;12026:475;;12152:13;;12136:12;;12086:14;;12136:29;12132:1;:34;12104:22;;;12132:34;12103:65;;;;;12086:82;;12197:14;12263:4;:13;;;12247:4;:12;;;:29;12243:1;:34;12227:10;12215:9;:22;12214:65;;;;;12303:4;:26;;;;;;;12344:12;:25;;;;;;;;12385:13;:26;;12214:65;;;;12385:26;;;;;;;-1:-1:-1;12426:12:20;:25;;;;;;;12466:18;:23;;-1:-1:-1;12466:23:20;;;12026:475;11875:633;;:::o;5473:1234::-;5598:7;5592:13;;;;5616;5546:10;;;5650:11;:9;:11::i;:::-;5677:4;:13;:18;;5676:43;;-1:-1:-1;5701:12:20;;:17;5676:43;5672:724;;;5744:2;5736:10;;5769:2;5761:10;;5815:4;5793:19;5806:5;5798;:13;5793:4;:19::i;:::-;5851:4;5834:14;:21;5793:26;;-1:-1:-1;5672:724:20;;;5931:4;:13;5916:12;;5898:10;;5931:13;5911:17;;5931:13;5911:33;;;;;5898:46;;5959:10;5993:4;:12;;;5977:4;:13;;;5972:2;:18;:33;;;;;;5959:46;;6032:2;6023:5;:11;6020:188;;6062:2;6054:10;;6091:5;6083:13;;6020:188;;;6158:2;6150:10;;6187:5;6179:13;;6020:188;6261:4;:13;6244:14;;6222:11;;6261:13;6236:22;;6261:13;6236:38;;;;;6222:52;;6289:11;6328:4;:12;;;6311:4;:14;;;6303:5;:22;:37;;;;;;6289:51;;6365:19;6369:6;6377;6365:3;:19::i;:::-;6358:26;;5672:724;;;;;6406:4;:22;;;;;;;;6439:12;:21;;;;;;;;6472:14;:22;;;;;;6523:34;;6528:28;6523:4;:34::i;:::-;6508:12;:49;6611:5;6586;6592:6;6586:13;;;;;;;;;;:30;;;;;;;;6652:5;6586:21;6633:6;6627:13;;;;;;;;;;:21;;;:30;;;;;;;;;;;6695:4;6668:5;6674:6;6668:13;;;;;;;;;;:23;;;:31;;;;;;;;;;;5473:1234;;;;;;;:::o;11162:346::-;11249:7;11243:13;11219:10;11267:11;:9;:11::i;:::-;11318:4;:13;11302:12;;11318:18;;;;11297:17;;11318:18;11297:40;;;;11348:4;:19;;;;;;11378:12;:21;;11297:40;;;;11378:21;;;;;;11297:40;-1:-1:-1;11365:2:20;11348:13;11430:6;11424:13;;;;;;;;;;:27;;;;;;;;11487:5;11424:21;11468:6;11462:13;;;;;;;;;;:21;;;:30;;;;;;;;;;;11162:346;;;;:::o;8696:691::-;8771:13;8786;8834:5;8840:6;8834:13;;;;;;;;;;:23;;;8820:10;:37;;8812:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8890:11;:9;:11::i;:::-;8965:14;;:4;8948:13;8933:29;;:10;;:14;:29::i;:::-;:46;;;;;9032:14;;9016:12;;8933:46;;;;;-1:-1:-1;9032:14:20;9001:28;;:10;;:14;:28::i;:::-;:45;;;;;;8990:56;;9094:10;9067:5;9073:6;9067:13;;;;;;;;;;:23;;:37;;;;;;;;9115:14;:28;;;;;;;9189:8;-1:-1:-1;9170:6:20;9164:13;;;;;;;;;;:33;;;;;;;9233:8;9164:21;9214:6;9208:13;;;;;;;;;;:21;;:33;;;;;;;;9254:4;:25;;;;;;;;;9290:12;:24;;;;;;;;;9341:34;;9346:28;9341:4;:34::i;:::-;9326:12;:49;8696:691;;;;-1:-1:-1;8696:691:20;-1:-1:-1;8696:691:20:o;2491:812::-;2568:12;;:4;2552:13;2530:14;;2547:34;;2552:28;2547:4;:34::i;:::-;2609:12;;2530:51;;-1:-1:-1;2597:24:20;;2592:704;;;2639:14;2656:56;2710:1;2656:49;2677:27;2691:4;:12;;;2677:9;:13;;:27;;;;:::i;:::-;2657:14;;;2656:20;:49::i;:::-;:53;;:56::i;:::-;2768:12;;2639:73;;-1:-1:-1;2727:16:20;;2746:35;;:17;:9;2760:2;2746:13;:17::i;:35::-;2727:54;-1:-1:-1;2796:21:20;2833:19;2727:54;2849:2;2833:15;:19::i;:::-;2820:9;:33;;;;;;;-1:-1:-1;2872:20:20;;2868:160;;2913:14;:34;;;;;;2966:26;:46;;;;;;2868:160;3043:23;3082:19;:11;3098:2;3082:15;:19::i;:::-;3069:9;:33;;;;;;;-1:-1:-1;3121:22:20;;3117:163;;3164:14;:36;;;;;;3219:23;:45;;;;;;3117:163;2592:704;;;;;2491:812;:::o;7967:714::-;8043:13;8058;8106:5;8112:6;8106:13;;;;;;;;;;:24;;;8092:10;:38;;8084:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8163:12;:10;:12::i;:::-;8241:15;;:7;8222:15;8207:31;;:10;;:14;:31::i;:::-;:49;;;;;8312:15;;8293;;8207:49;;;;;-1:-1:-1;8312:15:20;8278:31;;:10;;:14;:31::i;:::-;:49;;;;;;8267:60;;8376:10;8348:5;8354:6;8348:13;;;;;;;;;;:24;;:38;;;;;;;;8397:15;:29;;;;;;;8472:8;-1:-1:-1;8453:6:20;8447:13;;;;;;;;;;:33;;;;;;;8516:8;8447:21;8497:6;8491:13;;;;;;;;;;:21;;:33;;;;;;;;8537:7;:27;;;;;;;;;8575:15;:27;;;;;;;;;8630:39;;8635:33;8630:4;:39::i;:::-;8614:13;:55;7967:714;;;;-1:-1:-1;7967:714:20;-1:-1:-1;7967:714:20:o;9396:701::-;9471:13;9486;9534:5;9540:6;9534:13;;;;;;;;;;:23;;;9520:10;:37;;9512:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9600:11;:9;:11::i;:::-;9674:14;;9658:12;;9643:28;;:10;;:14;:28::i;:::-;:45;;;;;9742:14;;9725:13;;9643:45;;;;;-1:-1:-1;9742:14:20;9710:29;;:10;;:14;:29::i;:::-;:46;;;;;;9699:57;;9804:10;9777:5;9783:6;9777:13;;;;;;;;;;:23;;:37;;;;;;;;9825:14;:28;;;;;;;9899:8;-1:-1:-1;9880:6:20;9874:13;;;;;;;;;;:33;;;;;;;9943:8;9874:21;9924:6;9918:13;;;;;;;;;;:21;;:33;;;;;;;;9964:12;:24;;;;;;;;;9999:13;:25;;;;;;;;;10051:34;;10056:28;10051:4;:34::i;:::-;10036:12;:49;9396:701;;;;-1:-1:-1;9396:701:20;-1:-1:-1;9396:701:20:o;3315:812::-;3391:13;;3376:12;;3354:14;;3371:34;;3376:28;3371:4;:34::i;:::-;3433:12;;3354:51;;-1:-1:-1;3421:24:20;;3416:704;;;3463:14;3480:56;3534:1;3480:49;3501:27;3515:4;:12;;;3501:9;:13;;:27;;;;:::i;:::-;3481:14;;;3480:20;:49::i;:56::-;3592:12;;3463:73;;-1:-1:-1;3551:16:20;;3570:35;;:17;:9;3584:2;3570:13;:17::i;:35::-;3551:54;-1:-1:-1;3620:21:20;3657:19;3551:54;3673:2;3657:15;:19::i;:::-;3644:9;:33;;;;;;;-1:-1:-1;3696:20:20;;3692:160;;3737:14;:34;;;;;;3790:26;:46;;;;;;3692:160;3867:23;3906:19;:11;3922:2;3906:15;:19::i;:::-;3893:9;:33;;;;;;;-1:-1:-1;3945:22:20;;3941:163;;3988:14;:36;;;;;;4043:23;:45;;;;;;3416:704;;;;3315:812;:::o;11520:343::-;11607:7;11601:13;11577:10;11625:11;:9;:11::i;:::-;11676:13;;11660:12;;11676:18;;;;11655:17;;11676:18;11655:40;;;;11708:13;:19;;;;;;11738:12;:21;;11655:40;;;;11738:21;;;;;;11655:40;-1:-1:-1;11725:2:20;11708:13;11790:6;11784:13;;;;;;;;;;:21;;;:27;;;;;;;;;;;11847:5;11822;11828:6;11822:13;;;;;;;;;;:30;;;;;;;11520:343;;-1:-1:-1;;11520:343:20:o;4139:1324::-;4269:7;4263:13;;;;4287;4213:12;;;4321;:10;:12::i;:::-;4359:7;:15;:20;;4358:48;;-1:-1:-1;4385:15:20;;:20;4358:48;4354:767;;;4433:2;4423:12;;4460:2;4450:12;;4510:4;4484:23;4499:7;4489;:17;4484:4;:23::i;:::-;4547:4;4529:15;:22;4484:30;;-1:-1:-1;4354:767:20;;;4630:7;:15;4612;;4594:10;;4630:15;4607:20;;4630:15;4607:38;;;;;4594:51;;4660:10;4696:7;:15;;;4678:7;:15;;;4673:2;:20;:38;;;;;;4660:51;;4738:2;4729:5;:11;4726:196;;4770:2;4760:12;;4801:5;4791:15;;4726:196;;;4870:2;4860:12;;4901:5;4891:15;;4726:196;4978:7;:15;4960;;4936:11;;4978:15;4950:25;;4978:15;4950:43;;;;;4936:57;;5008:11;5050:7;:15;;;5032:7;:15;;;5022:7;:25;:43;;;;;;5008:57;;5090:19;5094:6;5102;5090:3;:19::i;:::-;5083:26;;4354:767;;;;;5141:7;:26;;;;;;;;5178:15;:26;;;;;;;;5216:15;:23;;;;;;5269:39;;5274:33;5269:4;:39::i;:::-;5253:13;:55;5362:7;5337:5;5343:6;5337:13;;;;;;;;;;:32;;;;;;;;5405:7;5337:21;5386:6;5380:13;;;;;;;;;;:21;;;:32;;;;;;;;;;;5451:4;5423:5;5429:6;5423:13;;;;;;;;;;:24;;;:32;;;;;;;;;;;4139:1324;;;;;;;:::o;10640:510::-;10730:7;10724:13;10700:10;;10781:11;10724:13;10788:3;10781:6;:11::i;:::-;10840:7;:15;10758:34;;-1:-1:-1;10803:14:20;;10820:36;;10758:34;;10820:19;:36::i;:::-;10803:53;;10867:16;10886:48;10918:15;10886:27;10908:4;10887:7;:15;;;10886:21;;:27;;;;:::i;:48::-;10867:67;;10965:11;10953:9;:23;;;;;10997:15;:21;;;;;;:7;11029:24;;10953:23;;;;11029:24;;;;;;10953:23;-1:-1:-1;11016:2:20;10997:15;11080:6;11074:13;;;;;;;;;;:21;;;:27;;;;;;;;;;;11137:5;11112;11118:6;11112:13;;;;;;;;;;:30;;;;;;;-1:-1:-1;10640:510:20;;;-1:-1:-1;;;;10640:510:20:o;1962:521::-;2042:15;;:7;2024:15;2002:14;;2019:39;;2024:33;2019:4;:39::i;:::-;2086:13;;2002:56;;-1:-1:-1;2074:25:20;;2069:407;;;2170:13;;2117:14;;2134:51;;2156:28;;:9;;:13;:28::i;:::-;2135:15;;;2134:21;:51::i;:::-;2240:13;;2117:68;;-1:-1:-1;2200:16:20;;2219:35;;:16;:9;2233:1;2219:13;:16::i;:35::-;2200:54;;2269:16;2300:11;2288:9;:23;;;;;;;-1:-1:-1;2330:15:20;;2326:138;;2366:15;:30;;;;;;2415:18;:33;;;;;;2326:138;2069:407;;;1962:521;:::o;1406:23::-;;;;;;;;;;;;:::o;12737:303::-;12782:6;12809:1;12805;:5;12801:232;;;-1:-1:-1;12831:1:20;12864;12860;12856:5;;:9;12880:92;12891:1;12887;:5;12880:92;;;12917:1;12913:5;;12955:1;12950;12946;12942;:5;;;;;;:9;12941:15;;;;;;12937:19;;12880:92;;;12801:232;;;;12993:6;;12989:44;;-1:-1:-1;13020:1:20;12989:44;12737:303;;;:::o;12523:96::-;12575:6;12602:1;12598;:5;:13;;12610:1;12598:13;;;12606:1;12598:13;12594:17;12523:96;-1:-1:-1;;;12523:96:20:o;362:142::-;414:6;441;;;:30;;-1:-1:-1;;456:5:20;;;470:1;465;456:5;465:1;451:15;;;;;:20;441:30;433:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;362:142;;;;:::o;89:128::-;173:5;;;168:16;;;;160:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;225:129;309:5;;;304:16;;;;296:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/simu/FeSwapSimu.sol:SafeMath": {
      "abi": [],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122062eafb5d8ceaba320b07635bfa95a65fa4f3c5845f050999bdc350ecf61d300d64736f6c634300060c0033",
          "opcodes": "PUSH1 0x56 PUSH1 0x23 PUSH1 0xB DUP3 DUP3 DUP3 CODECOPY DUP1 MLOAD PUSH1 0x0 BYTE PUSH1 0x73 EQ PUSH1 0x16 JUMPI INVALID JUMPDEST ADDRESS PUSH1 0x0 MSTORE PUSH1 0x73 DUP2 MSTORE8 DUP3 DUP2 RETURN INVALID PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0xEAFB5D DUP13 0xEA 0xBA ORIGIN SIGNEXTEND SMOD PUSH4 0x5BFA95A6 0x5F LOG4 RETURN 0xC5 DUP5 0x5F SDIV MULMOD SWAP10 0xBD 0xC3 POP 0xEC 0xF6 SAR ADDRESS 0xD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "65:442:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122062eafb5d8ceaba320b07635bfa95a65fa4f3c5845f050999bdc350ecf61d300d64736f6c634300060c0033",
          "opcodes": "PUSH20 0x0 ADDRESS EQ PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x0 DUP1 REVERT INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 PUSH3 0xEAFB5D DUP13 0xEA 0xBA ORIGIN SIGNEXTEND SMOD PUSH4 0x5BFA95A6 0x5F LOG4 RETURN 0xC5 DUP5 0x5F SDIV MULMOD SWAP10 0xBD 0xC3 POP 0xEC 0xF6 SAR ADDRESS 0xD PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "65:442:20:-:0;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/simu/FeSwapSimu.sol\":\"SafeMath\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/simu/FeSwapSimu.sol\":{\"keccak256\":\"0xf249ed0efa90c4074974a243079c01212f62372cf45e9dde173028cb43d0ada3\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://52a30051b6963126f94b53464fa7bc3c234b6e4665365fb893d0ded4c84fa3b8\",\"dweb:/ipfs/QmNu3RKmeshA6hQpMs2NdGneENk8ccHU4R3hgMhUsSgC1x\"]}},\"version\":1}",
      "bytecode": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122062eafb5d8ceaba320b07635bfa95a65fa4f3c5845f050999bdc350ecf61d300d64736f6c634300060c0033",
      "bin": "60566023600b82828239805160001a607314601657fe5b30600052607381538281f3fe73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122062eafb5d8ceaba320b07635bfa95a65fa4f3c5845f050999bdc350ecf61d300d64736f6c634300060c0033",
      "bin-runtime": "73000000000000000000000000000000000000000030146080604052600080fdfea264697066735822122062eafb5d8ceaba320b07635bfa95a65fa4f3c5845f050999bdc350ecf61d300d64736f6c634300060c0033",
      "srcmap": "65:442:20:-:0;;;;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "65:442:20:-:0;;;;;;;;"
    },
    "contracts/test/DeflatingERC20.sol:DeflatingERC20": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_totalSupply",
              "type": "uint256"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50604051610d9d380380610d9d8339818101604052602081101561003357600080fd5b5051604080518082018252601481527f4465666c6174696e67205465737420546f6b656e0000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015246608082018190523060a0808401919091528451808403909101815260c09092019093528051910120600355610125338361012c565b505061022c565b610145816000546101ce60201b61082c1790919060201c565b60009081556001600160a01b03831681526001602090815260409091205461017691839061082c6101ce821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610226576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610b628061023b6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c133848461089e565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361090d565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461097f565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461097f565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080489898961089e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6064810461098d8482610a73565b6000610999838361090d565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020549091506109cc908261090d565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600160205260408082209390935590861681522054610a08908261082c565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610aa3908261090d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610ad7908261090d565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a3505056fea2646970667358221220aa07782afd123aaa1477396d749fd6eb9bce95b0da7c01eee3ff6efd1c2da6f364736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH2 0xD9D CODESIZE SUB DUP1 PUSH2 0xD9D DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x33 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP MLOAD PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x14 DUP2 MSTORE PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 PUSH1 0x20 SWAP2 DUP3 ADD MSTORE DUP2 MLOAD DUP1 DUP4 ADD DUP4 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP3 ADD MSTORE DUP2 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP4 ADD MSTORE PUSH32 0xF89E31130E6FD3D87D62A1AC2770FBA58BED5A06C47CE70FA97F8218B1B2743A DUP2 DUP5 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD DUP2 SWAP1 MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP5 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP5 MLOAD DUP1 DUP5 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP3 ADD SWAP1 SWAP4 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE PUSH2 0x125 CALLER DUP4 PUSH2 0x12C JUMP JUMPDEST POP POP PUSH2 0x22C JUMP JUMPDEST PUSH2 0x145 DUP2 PUSH1 0x0 SLOAD PUSH2 0x1CE PUSH1 0x20 SHL PUSH2 0x82C OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH2 0x176 SWAP2 DUP4 SWAP1 PUSH2 0x82C PUSH2 0x1CE DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x226 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH2 0xB62 DUP1 PUSH2 0x23B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4AA JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4EB JUMP JUMPDEST PUSH2 0xEC PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x536 JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x543 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x89E JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x495 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x463 SWAP1 DUP4 PUSH2 0x90D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A0 DUP5 DUP5 DUP5 PUSH2 0x97F JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4454540000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x97F JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x713 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x78E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x804 DUP10 DUP10 DUP10 PUSH2 0x89E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 DIV PUSH2 0x98D DUP5 DUP3 PUSH2 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x999 DUP4 DUP4 PUSH2 0x90D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x9CC SWAP1 DUP3 PUSH2 0x90D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA08 SWAP1 DUP3 PUSH2 0x82C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP10 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xAA3 SWAP1 DUP3 PUSH2 0x90D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0xAD7 SWAP1 DUP3 PUSH2 0x90D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA SMOD PUSH25 0x2AFD123AAA1477396D749FD6EB9BCE95B0DA7C01EEE3FF6EFD SHR 0x2D 0xA6 RETURN PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "104:3599:21:-:0;;;924:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;924:519:21;1263:4;;;;;;;;;;;;924:519;1263:4;;;;1298:10;;;;;;;;;;-1:-1:-1;;;1298:10:21;;;;1104:278;;1133:95;1104:278;;;;1247:22;1104:278;;;;1288:21;1104:278;;;;1031:9;1104:278;;;;;;1362:4;1104:278;;;;;;;;;;;;;;;;;;;;;;;;;1080:313;;;;;1061:16;:332;1404:31;1410:10;924:519;1404:5;:31::i;:::-;924:519;;104:3599;;1451:201;1524:22;1540:5;1524:11;;:15;;;;;;:22;;;;:::i;:::-;1510:11;:36;;;-1:-1:-1;;;;;1573:13:21;;;;:9;:13;;;;;;;;;:24;;1591:5;;1573:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1557:13:21;;;;;;:9;:13;;;;;;;;:40;;;;1613:31;;;;;;;1557:13;;;;1613:31;;;;;;;;;;1451:201;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;-1:-1:-1;;;268:49:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:128;;;;:::o;104:3599:21:-;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c133848461089e565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361090d565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461097f565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461097f565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080489898961089e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6064810461098d8482610a73565b6000610999838361090d565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020549091506109cc908261090d565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600160205260408082209390935590861681522054610a08908261082c565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610aa3908261090d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610ad7908261090d565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a3505056fea2646970667358221220aa07782afd123aaa1477396d749fd6eb9bce95b0da7c01eee3ff6efd1c2da6f364736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xDF JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x3644E515 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x29F JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2A7 JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2E0 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x340 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x3644E515 EQ PUSH2 0x231 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x239 JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x26C JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xBD JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1C8 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x20B JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x213 JUMPI PUSH2 0xDF JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xE4 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x161 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1AE JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xEC PUSH2 0x37B JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x126 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x10E JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x153 JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x177 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3B4 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x3CB JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1DE JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3D1 JUMP JUMPDEST PUSH2 0x1B6 PUSH2 0x4AA JUMP JUMPDEST PUSH2 0x21B PUSH2 0x4CE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1B6 PUSH2 0x4D3 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x24F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4D9 JUMP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x282 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x4EB JUMP JUMPDEST PUSH2 0xEC PUSH2 0x4FD JUMP JUMPDEST PUSH2 0x19A PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x536 JUMP JUMPDEST PUSH2 0x33E PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x2F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x543 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1B6 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x356 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x80F JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x14 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4465666C6174696E67205465737420546F6B656E000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x89E JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x495 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x463 SWAP1 DUP4 PUSH2 0x90D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4A0 DUP5 DUP5 DUP5 PUSH2 0x97F JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x3 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4454540000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3C1 CALLER DUP5 DUP5 PUSH2 0x97F JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x5B2 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x7 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4558504952454400000000000000000000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x713 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x78E JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x7F9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x11 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x494E56414C49445F5349474E4154555245000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x804 DUP10 DUP10 DUP10 PUSH2 0x89E JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3C5 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x64 DUP2 DIV PUSH2 0x98D DUP5 DUP3 PUSH2 0xA73 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x999 DUP4 DUP4 PUSH2 0x90D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP7 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD SWAP1 SWAP2 POP PUSH2 0x9CC SWAP1 DUP3 PUSH2 0x90D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP8 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP7 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xA08 SWAP1 DUP3 PUSH2 0x82C JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP7 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP10 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP POP POP JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xAA3 SWAP1 DUP3 PUSH2 0x90D JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SWAP2 SWAP1 SWAP2 SSTORE SLOAD PUSH2 0xAD7 SWAP1 DUP3 PUSH2 0x90D JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x40 DUP1 MLOAD DUP4 DUP2 MSTORE SWAP1 MLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND SWAP2 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG3 POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xAA SMOD PUSH25 0x2AFD123AAA1477396D749FD6EB9BCE95B0DA7C01EEE3FF6EFD SHR 0x2D 0xA6 RETURN PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "104:3599:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;167:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2437:147;;;;;;;;;;;;;;;;-1:-1:-1;2437:147:21;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;312:24;;;:::i;:::-;;;;;;;;;;;;;;;;2739:301;;;;;;;;;;;;;;;;-1:-1:-1;2739:301:21;;;;;;;;;;;;;;;;;;:::i;604:108::-;;;:::i;270:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;461:31;;;:::i;343:41::-;;;;;;;;;;;;;;;;-1:-1:-1;343:41:21;;;;:::i;719:38::-;;;;;;;;;;;;;;;;-1:-1:-1;719:38:21;;;;:::i;226:37::-;;;:::i;2592:139::-;;;;;;;;;;;;;;;;-1:-1:-1;2592:139:21;;;;;;;;;:::i;3048:652::-;;;;;;;;;;;;;;;;-1:-1:-1;3048:652:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;391:61;;;;;;;;;;;;;;;;-1:-1:-1;391:61:21;;;;;;;;;;;:::i;167:52::-;;;;;;;;;;;;;;;;;;;:::o;2437:147::-;2501:4;2518:36;2527:10;2539:7;2548:5;2518:8;:36::i;:::-;-1:-1:-1;2572:4:21;2437:147;;;;;:::o;312:24::-;;;;:::o;2739:301::-;2838:15;;;2817:4;2838:15;;;:9;:15;;;;;;;;2854:10;2838:27;;;;;;;;2874:2;2838:39;2834:140;;2924:15;;;;;;;:9;:15;;;;;;;;2940:10;2924:27;;;;;;;;:38;;2956:5;2924:31;:38::i;:::-;2894:15;;;;;;;:9;:15;;;;;;;;2910:10;2894:27;;;;;;;:68;2834:140;2984:26;2994:4;3000:2;3004:5;2984:9;:26::i;:::-;-1:-1:-1;3028:4:21;2739:301;;;;;:::o;604:108::-;646:66;604:108;:::o;270:35::-;303:2;270:35;:::o;461:31::-;;;;:::o;343:41::-;;;;;;;;;;;;;:::o;719:38::-;;;;;;;;;;;;;:::o;226:37::-;;;;;;;;;;;;;;;;;;;:::o;2592:139::-;2652:4;2669:32;2679:10;2691:2;2695:5;2669:9;:32::i;3048:652::-;3194:15;3182:8;:27;;3174:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3337:16;;3433:13;;;;3232:14;3433:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3382:77;;646:66;3382:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3372:88;;;;;;3273:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:237;;;;;;;;;3524:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3232:14;;3433:15;3524:26;;;;;-1:-1:-1;3524:26:21;;;;;;;;;;3433:15;3524:26;;;;;;;;;;;;;;;-1:-1:-1;;3524:26:21;;;;;;-1:-1:-1;;3569:30:21;;;;;;;:59;;;3623:5;3603:25;;:16;:25;;;3569:59;3561:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3661:31;3670:5;3677:7;3686:5;3661:8;:31::i;:::-;3048:652;;;;;;;;;:::o;391:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1877:169:21;1958:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2007:31;;;;;;;;;;;;;;;;;1877:169;;;:::o;333:129:17:-;417:5;;;412:16;;;;404:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2054:375:21;2156:3;2148:11;;2170:23;2176:4;2148:11;2170:5;:23::i;:::-;2204:19;2226:21;:5;2236:10;2226:9;:21::i;:::-;2276:15;;;;;;;:9;:15;;;;;;2204:43;;-1:-1:-1;2276:35:21;;2204:43;2276:19;:35::i;:::-;2258:15;;;;;;;;:9;:15;;;;;;:53;;;;2338:13;;;;;;;:33;;2356:14;2338:17;:33::i;:::-;2322:13;;;;;;;;:9;:13;;;;;;;;;:49;;;;2387:34;;;;;;;2322:13;;2387:34;;;;;;;;;;;;;2054:375;;;;;:::o;1660:209::-;1739:15;;;;;;;:9;:15;;;;;;:26;;1759:5;1739:19;:26::i;:::-;1721:15;;;;;;;:9;:15;;;;;:44;;;;1790:11;:22;;1806:5;1790:15;:22::i;:::-;1776:11;:36;;;1828:33;;;;;;;;;;;;;;;;;;;;;;1660:209;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/DeflatingERC20.sol\":\"DeflatingERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xf04a5109c9205c67202d408fdf6ce80ec28fcd93702bdba158d88aae5a6573ad\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ee35c811f41747d96f6946388815e9bf4d6c72dd3ddec7f1de3815979f3f415\",\"dweb:/ipfs/QmZFQ9oBd3DyZbzNf7eTesDxjNxyzpyPcxSC8w9RVRpNPM\"]},\"contracts/test/DeflatingERC20.sol\":{\"keccak256\":\"0x79b3c8bd2f50f2e8ff211c909803ac763e8f5b7673523e7505f12f120c802313\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://89558fec3d28b05c10cbf560554be43ce7755b7a3aab730d9e1551a5a6298b8a\",\"dweb:/ipfs/QmaKAiSS9ru11X6QJv3i4dVxp2p17CEzMjpYJRf5wK96jx\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b50604051610d9d380380610d9d8339818101604052602081101561003357600080fd5b5051604080518082018252601481527f4465666c6174696e67205465737420546f6b656e0000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015246608082018190523060a0808401919091528451808403909101815260c09092019093528051910120600355610125338361012c565b505061022c565b610145816000546101ce60201b61082c1790919060201c565b60009081556001600160a01b03831681526001602090815260409091205461017691839061082c6101ce821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610226576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610b628061023b6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c133848461089e565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361090d565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461097f565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461097f565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080489898961089e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6064810461098d8482610a73565b6000610999838361090d565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020549091506109cc908261090d565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600160205260408082209390935590861681522054610a08908261082c565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610aa3908261090d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610ad7908261090d565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a3505056fea2646970667358221220aa07782afd123aaa1477396d749fd6eb9bce95b0da7c01eee3ff6efd1c2da6f364736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b50604051610d9d380380610d9d8339818101604052602081101561003357600080fd5b5051604080518082018252601481527f4465666c6174696e67205465737420546f6b656e0000000000000000000000006020918201528151808301835260018152603160f81b9082015281517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818301527ff89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a818401527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606082015246608082018190523060a0808401919091528451808403909101815260c09092019093528051910120600355610125338361012c565b505061022c565b610145816000546101ce60201b61082c1790919060201c565b60009081556001600160a01b03831681526001602090815260409091205461017691839061082c6101ce821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015610226576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b610b628061023b6000396000f3fe608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c133848461089e565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361090d565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461097f565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461097f565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080489898961089e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6064810461098d8482610a73565b6000610999838361090d565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020549091506109cc908261090d565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600160205260408082209390935590861681522054610a08908261082c565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610aa3908261090d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610ad7908261090d565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a3505056fea2646970667358221220aa07782afd123aaa1477396d749fd6eb9bce95b0da7c01eee3ff6efd1c2da6f364736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100df5760003560e01c80633644e5151161008c57806395d89b411161006657806395d89b411461029f578063a9059cbb146102a7578063d505accf146102e0578063dd62ed3e14610340576100df565b80633644e5151461023157806370a08231146102395780637ecebe001461026c576100df565b806323b872dd116100bd57806323b872dd146101c857806330adf81f1461020b578063313ce56714610213576100df565b806306fdde03146100e4578063095ea7b31461016157806318160ddd146101ae575b600080fd5b6100ec61037b565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561012657818101518382015260200161010e565b50505050905090810190601f1680156101535780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61019a6004803603604081101561017757600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103b4565b604080519115158252519081900360200190f35b6101b66103cb565b60408051918252519081900360200190f35b61019a600480360360608110156101de57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103d1565b6101b66104aa565b61021b6104ce565b6040805160ff9092168252519081900360200190f35b6101b66104d3565b6101b66004803603602081101561024f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104d9565b6101b66004803603602081101561028257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166104eb565b6100ec6104fd565b61019a600480360360408110156102bd57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610536565b61033e600480360360e08110156102f657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610543565b005b6101b66004803603604081101561035657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351661080f565b6040518060400160405280601481526020017f4465666c6174696e67205465737420546f6b656e00000000000000000000000081525081565b60006103c133848461089e565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104955773ffffffffffffffffffffffffffffffffffffffff84166000908152600260209081526040808320338452909152902054610463908361090d565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104a084848461097f565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600381526020017f445454000000000000000000000000000000000000000000000000000000000081525081565b60006103c133848461097f565b428410156105b257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600760248201527f4558504952454400000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015610713573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061078e57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6107f957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601160248201527f494e56414c49445f5349474e4154555245000000000000000000000000000000604482015290519081900360640190fd5b61080489898961089e565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103c557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b6064810461098d8482610a73565b6000610999838361090d565b73ffffffffffffffffffffffffffffffffffffffff86166000908152600160205260409020549091506109cc908261090d565b73ffffffffffffffffffffffffffffffffffffffff8087166000908152600160205260408082209390935590861681522054610a08908261082c565b73ffffffffffffffffffffffffffffffffffffffff80861660008181526001602090815260409182902094909455805185815290519193928916927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35050505050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260016020526040902054610aa3908261090d565b73ffffffffffffffffffffffffffffffffffffffff831660009081526001602052604081209190915554610ad7908261090d565b600090815560408051838152905173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef919081900360200190a3505056fea2646970667358221220aa07782afd123aaa1477396d749fd6eb9bce95b0da7c01eee3ff6efd1c2da6f364736f6c634300060c0033",
      "srcmap": "104:3599:21:-:0;;;924:519;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;924:519:21;1263:4;;;;;;;;;;;;924:519;1263:4;;;;1298:10;;;;;;;;;;-1:-1:-1;;;1298:10:21;;;;1104:278;;1133:95;1104:278;;;;1247:22;1104:278;;;;1288:21;1104:278;;;;1031:9;1104:278;;;;;;1362:4;1104:278;;;;;;;;;;;;;;;;;;;;;;;;;1080:313;;;;;1061:16;:332;1404:31;1410:10;924:519;1404:5;:31::i;:::-;924:519;;104:3599;;1451:201;1524:22;1540:5;1524:11;;:15;;;;;;:22;;;;:::i;:::-;1510:11;:36;;;-1:-1:-1;;;;;1573:13:21;;;;:9;:13;;;;;;;;;:24;;1591:5;;1573:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1557:13:21;;;;;;:9;:13;;;;;;;;:40;;;;1613:31;;;;;;;1557:13;;;;1613:31;;;;;;;;;;1451:201;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;-1:-1:-1;;;268:49:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:128;;;;:::o;104:3599:21:-;;;;;;;",
      "srcmap-runtime": "104:3599:21:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;167:52;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2437:147;;;;;;;;;;;;;;;;-1:-1:-1;2437:147:21;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;312:24;;;:::i;:::-;;;;;;;;;;;;;;;;2739:301;;;;;;;;;;;;;;;;-1:-1:-1;2739:301:21;;;;;;;;;;;;;;;;;;:::i;604:108::-;;;:::i;270:35::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;461:31;;;:::i;343:41::-;;;;;;;;;;;;;;;;-1:-1:-1;343:41:21;;;;:::i;719:38::-;;;;;;;;;;;;;;;;-1:-1:-1;719:38:21;;;;:::i;226:37::-;;;:::i;2592:139::-;;;;;;;;;;;;;;;;-1:-1:-1;2592:139:21;;;;;;;;;:::i;3048:652::-;;;;;;;;;;;;;;;;-1:-1:-1;3048:652:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;391:61;;;;;;;;;;;;;;;;-1:-1:-1;391:61:21;;;;;;;;;;;:::i;167:52::-;;;;;;;;;;;;;;;;;;;:::o;2437:147::-;2501:4;2518:36;2527:10;2539:7;2548:5;2518:8;:36::i;:::-;-1:-1:-1;2572:4:21;2437:147;;;;;:::o;312:24::-;;;;:::o;2739:301::-;2838:15;;;2817:4;2838:15;;;:9;:15;;;;;;;;2854:10;2838:27;;;;;;;;2874:2;2838:39;2834:140;;2924:15;;;;;;;:9;:15;;;;;;;;2940:10;2924:27;;;;;;;;:38;;2956:5;2924:31;:38::i;:::-;2894:15;;;;;;;:9;:15;;;;;;;;2910:10;2894:27;;;;;;;:68;2834:140;2984:26;2994:4;3000:2;3004:5;2984:9;:26::i;:::-;-1:-1:-1;3028:4:21;2739:301;;;;;:::o;604:108::-;646:66;604:108;:::o;270:35::-;303:2;270:35;:::o;461:31::-;;;;:::o;343:41::-;;;;;;;;;;;;;:::o;719:38::-;;;;;;;;;;;;;:::o;226:37::-;;;;;;;;;;;;;;;;;;;:::o;2592:139::-;2652:4;2669:32;2679:10;2691:2;2695:5;2669:9;:32::i;3048:652::-;3194:15;3182:8;:27;;3174:47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3337:16;;3433:13;;;;3232:14;3433:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3382:77;;646:66;3382:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3372:88;;;;;;3273:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3249:237;;;;;;;;;3524:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3232:14;;3433:15;3524:26;;;;;-1:-1:-1;3524:26:21;;;;;;;;;;3433:15;3524:26;;;;;;;;;;;;;;;-1:-1:-1;;3524:26:21;;;;;;-1:-1:-1;;3569:30:21;;;;;;;:59;;;3623:5;3603:25;;:16;:25;;;3569:59;3561:89;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3661:31;3670:5;3677:7;3686:5;3661:8;:31::i;:::-;3048:652;;;;;;;;;:::o;391:61::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1877:169:21;1958:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2007:31;;;;;;;;;;;;;;;;;1877:169;;;:::o;333:129:17:-;417:5;;;412:16;;;;404:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2054:375:21;2156:3;2148:11;;2170:23;2176:4;2148:11;2170:5;:23::i;:::-;2204:19;2226:21;:5;2236:10;2226:9;:21::i;:::-;2276:15;;;;;;;:9;:15;;;;;;2204:43;;-1:-1:-1;2276:35:21;;2204:43;2276:19;:35::i;:::-;2258:15;;;;;;;;:9;:15;;;;;;:53;;;;2338:13;;;;;;;:33;;2356:14;2338:17;:33::i;:::-;2322:13;;;;;;;;:9;:13;;;;;;;;;:49;;;;2387:34;;;;;;;2322:13;;2387:34;;;;;;;;;;;;;2054:375;;;;;:::o;1660:209::-;1739:15;;;;;;;:9;:15;;;;;;:26;;1759:5;1739:19;:26::i;:::-;1721:15;;;;;;;:9;:15;;;;;:44;;;;1790:11;:22;;1806:5;1790:15;:22::i;:::-;1776:11;:36;;;1828:33;;;;;;;;;;;;;;;;;;;;;;1660:209;;:::o"
    },
    "contracts/test/ERC20.sol:ERC20": {
      "abi": [
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "_totalSupply",
              "type": "uint256"
            },
            {
              "internalType": "string",
              "name": "_name",
              "type": "string"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "constructor"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "inputs": [],
          "name": "DOMAIN_SEPARATOR",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "PERMIT_TYPEHASH",
          "outputs": [
            {
              "internalType": "bytes32",
              "name": "",
              "type": "bytes32"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "nonces",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "owner",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "spender",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            },
            {
              "internalType": "uint8",
              "name": "v",
              "type": "uint8"
            },
            {
              "internalType": "bytes32",
              "name": "r",
              "type": "bytes32"
            },
            {
              "internalType": "bytes32",
              "name": "s",
              "type": "bytes32"
            }
          ],
          "name": "permit",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "tokenName",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "from",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "value",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60806040523480156200001157600080fd5b5060405162000ee438038062000ee4833981810160405260408110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82516401000000008111828201881017156200009057600080fd5b82525081516020918201929091019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b5060408181018152600682526504665537761760d41b6020928301528051808201825260018152603160f81b9083015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528251808303909101815260c0909101909152805191012060035550620001ca915033905083620001e8565b8051620001df906005906020840190620002ef565b5050506200038b565b62000204816000546200029060201b620008eb1790919060201c565b60009081556001600160a01b03831681526001602090815260409091205462000238918390620008eb62000290821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015620002e9576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200033257805160ff191683800117855562000362565b8280016001018555821562000362579182015b828111156200036257825182559160200191906001019062000345565b506200037092915062000374565b5090565b5b8082111562000370576000815560010162000375565b610b49806200039b6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636c02a9311161008c57806395d89b411161006657806395d89b41146102b2578063a9059cbb146102ba578063d505accf146102f3578063dd62ed3e14610353576100ea565b80636c02a9311461024457806370a082311461024c5780637ecebe001461027f576100ea565b806323b872dd116100c857806323b872dd146101d357806330adf81f14610216578063313ce5671461021e5780633644e5151461023c576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f761038e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103c7565b604080519115158252519081900360200190f35b6101c16103de565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103e4565b6101c16104bd565b6102266104e1565b6040805160ff9092168252519081900360200190f35b6101c16104e6565b6100f76104ec565b6101c16004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610598565b6101c16004803603602081101561029557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105aa565b6100f76105bc565b6101a5600480360360408110156102d057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f5565b610351600480360360e081101561030957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610602565b005b6101c16004803603604081101561036957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108ce565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103d433848461095d565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104a85773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290205461047690836109cc565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104b3848484610a3e565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105905780601f1061056557610100808354040283529160200191610590565b820191906000526020600020905b81548152906001019060200180831161057357829003601f168201915b505050505081565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103d4338484610a3e565b4284101561067157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa1580156107d2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061084d57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b6108c389898961095d565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610a6e90826109cc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054610aaa90826108eb565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fea2646970667358221220e176d9e4720c018e9d038d3f53617fcebbe9bec359b6e800e8e34a54fa8d23ba64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH3 0x11 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x40 MLOAD PUSH3 0xEE4 CODESIZE SUB DUP1 PUSH3 0xEE4 DUP4 CODECOPY DUP2 DUP2 ADD PUSH1 0x40 MSTORE PUSH1 0x40 DUP2 LT ISZERO PUSH3 0x37 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 MLOAD PUSH1 0x20 DUP4 ADD DUP1 MLOAD PUSH1 0x40 MLOAD SWAP3 SWAP5 SWAP3 SWAP4 DUP4 ADD SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH3 0x5F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH3 0x75 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD PUSH5 0x100000000 DUP2 GT DUP3 DUP3 ADD DUP9 LT OR ISZERO PUSH3 0x90 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 SWAP1 SWAP2 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH3 0xBF JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH3 0xA5 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH3 0xED JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP PUSH1 0x40 DUP2 DUP2 ADD DUP2 MSTORE PUSH1 0x6 DUP3 MSTORE PUSH6 0x46655377617 PUSH1 0xD4 SHL PUSH1 0x20 SWAP3 DUP4 ADD MSTORE DUP1 MLOAD DUP1 DUP3 ADD DUP3 MSTORE PUSH1 0x1 DUP2 MSTORE PUSH1 0x31 PUSH1 0xF8 SHL SWAP1 DUP4 ADD MSTORE DUP1 MLOAD PUSH32 0x8B73C3C69BB8FE3D512ECC4CF759CC79239F7B179B0FFACAA9A75D522B39400F DUP2 DUP5 ADD MSTORE PUSH32 0x84AAF7FDA2A4DCB5E79FA4719E805D2B354FAFD29C5E5E9F8F62249697C6FBCD DUP2 DUP4 ADD MSTORE PUSH32 0xC89EFDAA54C0F20C7ADF612882DF0950F5A951637E0307CDCB4C672F298B8BC6 PUSH1 0x60 DUP3 ADD MSTORE CHAINID PUSH1 0x80 DUP3 ADD MSTORE ADDRESS PUSH1 0xA0 DUP1 DUP4 ADD SWAP2 SWAP1 SWAP2 MSTORE DUP3 MLOAD DUP1 DUP4 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xC0 SWAP1 SWAP2 ADD SWAP1 SWAP2 MSTORE DUP1 MLOAD SWAP2 ADD KECCAK256 PUSH1 0x3 SSTORE POP PUSH3 0x1CA SWAP2 POP CALLER SWAP1 POP DUP4 PUSH3 0x1E8 JUMP JUMPDEST DUP1 MLOAD PUSH3 0x1DF SWAP1 PUSH1 0x5 SWAP1 PUSH1 0x20 DUP5 ADD SWAP1 PUSH3 0x2EF JUMP JUMPDEST POP POP POP PUSH3 0x38B JUMP JUMPDEST PUSH3 0x204 DUP2 PUSH1 0x0 SLOAD PUSH3 0x290 PUSH1 0x20 SHL PUSH3 0x8EB OR SWAP1 SWAP2 SWAP1 PUSH1 0x20 SHR JUMP JUMPDEST PUSH1 0x0 SWAP1 DUP2 SSTORE PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 SWAP2 KECCAK256 SLOAD PUSH3 0x238 SWAP2 DUP4 SWAP1 PUSH3 0x8EB PUSH3 0x290 DUP3 SHL OR SWAP1 SHR JUMP JUMPDEST PUSH1 0x1 PUSH1 0x1 PUSH1 0xA0 SHL SUB DUP4 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP4 MLOAD DUP6 DUP2 MSTORE SWAP4 MLOAD SWAP3 SWAP4 SWAP2 SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH3 0x2E9 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH3 0x461BCD PUSH1 0xE5 SHL DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH3 0x332 JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH3 0x362 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH3 0x362 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH3 0x362 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH3 0x345 JUMP JUMPDEST POP PUSH3 0x370 SWAP3 SWAP2 POP PUSH3 0x374 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH3 0x370 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH3 0x375 JUMP JUMPDEST PUSH2 0xB49 DUP1 PUSH3 0x39B PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C02A931 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x353 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6C02A931 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x27F JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x23C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x38E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3E4 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x4BD JUMP JUMPDEST PUSH2 0x226 PUSH2 0x4E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x4EC JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x598 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5AA JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x5BC JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F5 JUMP JUMPDEST PUSH2 0x351 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x602 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4665537761700000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D4 CALLER DUP5 DUP5 PUSH2 0x95D JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x4A8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x476 SWAP1 DUP4 PUSH2 0x9CC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4B3 DUP5 DUP5 DUP5 PUSH2 0xA3E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x590 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x565 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x590 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x573 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4645535000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D4 CALLER DUP5 DUP5 PUSH2 0xA3E JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x671 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20455850495245440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x84D JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x8B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F5349474E415455524500000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8C3 DUP10 DUP10 DUP10 PUSH2 0x95D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA6E SWAP1 DUP3 PUSH2 0x9CC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAAA SWAP1 DUP3 PUSH2 0x8EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 PUSH23 0xD9E4720C018E9D038D3F53617FCEBBE9BEC359B6E800E8 0xE3 0x4A SLOAD STATICCALL DUP14 0x23 0xBA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "97:213:22:-:0;;;170:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;170:137:22;;;;;;;;;;-1:-1:-1;170:137:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;170:137:22;1367:4:0;;;;;;;;-1:-1:-1;;;1367:4:0;;;;;1402:10;;;;;;;;;;-1:-1:-1;;;1402:10:0;;;;1208:278;;1237:95;1208:278;;;;1351:22;1208:278;;;;1392:21;1208:278;;;;1135:9;1208:278;;;;1466:4;1208:278;;;;;;;;;;;;;;;;;;;;;;;;;1184:313;;;;;1165:16;:332;-1:-1:-1;240:31:22;;-1:-1:-1;246:10:22;;-1:-1:-1;258:12:22;240:5;:31::i;:::-;282:17;;;;:9;;:17;;;;;:::i;:::-;;170:137;;97:213;;1513:201:0;1586:22;1602:5;1586:11;;:15;;;;;;:22;;;;:::i;:::-;1572:11;:36;;;-1:-1:-1;;;;;1635:13:0;;;;:9;:13;;;;;;;;;:24;;1653:5;;1635:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1619:13:0;;;;;;:9;:13;;;;;;;;:40;;;;1675:31;;;;;;;1619:13;;;;1675:31;;;;;;;;;;1513:201;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;-1:-1:-1;;;268:49:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:128;;;;:::o;97:213:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;97:213:22;;;-1:-1:-1;97:213:22;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636c02a9311161008c57806395d89b411161006657806395d89b41146102b2578063a9059cbb146102ba578063d505accf146102f3578063dd62ed3e14610353576100ea565b80636c02a9311461024457806370a082311461024c5780637ecebe001461027f576100ea565b806323b872dd116100c857806323b872dd146101d357806330adf81f14610216578063313ce5671461021e5780633644e5151461023c576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f761038e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103c7565b604080519115158252519081900360200190f35b6101c16103de565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103e4565b6101c16104bd565b6102266104e1565b6040805160ff9092168252519081900360200190f35b6101c16104e6565b6100f76104ec565b6101c16004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610598565b6101c16004803603602081101561029557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105aa565b6100f76105bc565b6101a5600480360360408110156102d057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f5565b610351600480360360e081101561030957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610602565b005b6101c16004803603604081101561036957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108ce565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103d433848461095d565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104a85773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290205461047690836109cc565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104b3848484610a3e565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105905780601f1061056557610100808354040283529160200191610590565b820191906000526020600020905b81548152906001019060200180831161057357829003601f168201915b505050505081565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103d4338484610a3e565b4284101561067157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa1580156107d2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061084d57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b6108c389898961095d565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610a6e90826109cc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054610aaa90826108eb565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fea2646970667358221220e176d9e4720c018e9d038d3f53617fcebbe9bec359b6e800e8e34a54fa8d23ba64736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH1 0x4 CALLDATASIZE LT PUSH2 0xEA JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x6C02A931 GT PUSH2 0x8C JUMPI DUP1 PUSH4 0x95D89B41 GT PUSH2 0x66 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B2 JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2BA JUMPI DUP1 PUSH4 0xD505ACCF EQ PUSH2 0x2F3 JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x353 JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6C02A931 EQ PUSH2 0x244 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x24C JUMPI DUP1 PUSH4 0x7ECEBE00 EQ PUSH2 0x27F JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x23B872DD GT PUSH2 0xC8 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1D3 JUMPI DUP1 PUSH4 0x30ADF81F EQ PUSH2 0x216 JUMPI DUP1 PUSH4 0x313CE567 EQ PUSH2 0x21E JUMPI DUP1 PUSH4 0x3644E515 EQ PUSH2 0x23C JUMPI PUSH2 0xEA JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xEF JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x16C JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1B9 JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH2 0xF7 PUSH2 0x38E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x131 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x119 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x15E JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x182 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x3C7 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x3DE JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1E9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x3E4 JUMP JUMPDEST PUSH2 0x1C1 PUSH2 0x4BD JUMP JUMPDEST PUSH2 0x226 PUSH2 0x4E1 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST PUSH2 0x1C1 PUSH2 0x4E6 JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x4EC JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x262 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x598 JUMP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x295 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x5AA JUMP JUMPDEST PUSH2 0xF7 PUSH2 0x5BC JUMP JUMPDEST PUSH2 0x1A5 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x5F5 JUMP JUMPDEST PUSH2 0x351 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xE0 DUP2 LT ISZERO PUSH2 0x309 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0x60 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xFF PUSH1 0x80 DUP3 ADD CALLDATALOAD AND SWAP1 PUSH1 0xA0 DUP2 ADD CALLDATALOAD SWAP1 PUSH1 0xC0 ADD CALLDATALOAD PUSH2 0x602 JUMP JUMPDEST STOP JUMPDEST PUSH2 0x1C1 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x369 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x8CE JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x6 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4665537761700000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D4 CALLER DUP5 DUP5 PUSH2 0x95D JUMP JUMPDEST POP PUSH1 0x1 JUMPDEST SWAP3 SWAP2 POP POP JUMP JUMPDEST PUSH1 0x0 SLOAD DUP2 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE DUP2 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ PUSH2 0x4A8 JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH2 0x476 SWAP1 DUP4 PUSH2 0x9CC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SSTORE JUMPDEST PUSH2 0x4B3 DUP5 DUP5 DUP5 PUSH2 0xA3E JUMP JUMPDEST POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 JUMP JUMPDEST PUSH1 0x12 DUP2 JUMP JUMPDEST PUSH1 0x3 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x5 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x590 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x565 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x590 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x573 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x40 MLOAD DUP1 PUSH1 0x40 ADD PUSH1 0x40 MSTORE DUP1 PUSH1 0x4 DUP2 MSTORE PUSH1 0x20 ADD PUSH32 0x4645535000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE POP DUP2 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x3D4 CALLER DUP5 DUP5 PUSH2 0xA3E JUMP JUMPDEST TIMESTAMP DUP5 LT ISZERO PUSH2 0x671 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0xF PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20455850495245440000000000000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH1 0x3 SLOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP10 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD PUSH1 0x1 DUP1 DUP3 ADD SWAP1 SWAP3 SSTORE DUP3 MLOAD PUSH32 0x6E71EDAE12B1B97F4D1F60370FEF10105FA2FAAE0126114A169C64845D6126C9 DUP2 DUP7 ADD MSTORE DUP1 DUP5 ADD SWAP7 SWAP1 SWAP7 MSTORE SWAP6 DUP14 AND PUSH1 0x60 DUP7 ADD MSTORE PUSH1 0x80 DUP6 ADD DUP13 SWAP1 MSTORE PUSH1 0xA0 DUP6 ADD SWAP6 SWAP1 SWAP6 MSTORE PUSH1 0xC0 DUP1 DUP6 ADD DUP12 SWAP1 MSTORE DUP2 MLOAD DUP1 DUP7 SUB SWAP1 SWAP2 ADD DUP2 MSTORE PUSH1 0xE0 DUP6 ADD DUP3 MSTORE DUP1 MLOAD SWAP1 DUP4 ADD KECCAK256 PUSH32 0x1901000000000000000000000000000000000000000000000000000000000000 PUSH2 0x100 DUP7 ADD MSTORE PUSH2 0x102 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE PUSH2 0x122 DUP1 DUP6 ADD SWAP7 SWAP1 SWAP7 MSTORE DUP1 MLOAD DUP1 DUP6 SUB SWAP1 SWAP7 ADD DUP7 MSTORE PUSH2 0x142 DUP5 ADD DUP1 DUP3 MSTORE DUP7 MLOAD SWAP7 DUP4 ADD SWAP7 SWAP1 SWAP7 KECCAK256 SWAP6 DUP4 SWAP1 MSTORE PUSH2 0x162 DUP5 ADD DUP1 DUP3 MSTORE DUP7 SWAP1 MSTORE PUSH1 0xFF DUP10 AND PUSH2 0x182 DUP6 ADD MSTORE PUSH2 0x1A2 DUP5 ADD DUP9 SWAP1 MSTORE PUSH2 0x1C2 DUP5 ADD DUP8 SWAP1 MSTORE MLOAD SWAP2 SWAP4 SWAP3 PUSH2 0x1E2 DUP1 DUP3 ADD SWAP4 PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 DUP2 ADD SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 DUP6 GAS STATICCALL ISZERO DUP1 ISZERO PUSH2 0x7D2 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP POP PUSH1 0x40 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 ADD MLOAD SWAP2 POP POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 AND ISZERO DUP1 ISZERO SWAP1 PUSH2 0x84D JUMPI POP DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND EQ JUMPDEST PUSH2 0x8B8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x19 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x4665537761703A20494E56414C49445F5349474E415455524500000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH2 0x8C3 DUP10 DUP10 DUP10 PUSH2 0x95D JUMP JUMPDEST POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST DUP1 DUP3 ADD DUP3 DUP2 LT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x14 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D6164642D6F766572666C6F77000000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x2 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 SWAP5 DUP8 AND DUP1 DUP5 MSTORE SWAP5 DUP3 MSTORE SWAP2 DUP3 SWAP1 KECCAK256 DUP6 SWAP1 SSTORE DUP2 MLOAD DUP6 DUP2 MSTORE SWAP2 MLOAD PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP POP POP JUMP JUMPDEST DUP1 DUP3 SUB DUP3 DUP2 GT ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x15 PUSH1 0x24 DUP3 ADD MSTORE PUSH32 0x64732D6D6174682D7375622D756E646572666C6F770000000000000000000000 PUSH1 0x44 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD PUSH2 0xA6E SWAP1 DUP3 PUSH2 0x9CC JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 SWAP4 SWAP1 SWAP4 SSTORE SWAP1 DUP5 AND DUP2 MSTORE KECCAK256 SLOAD PUSH2 0xAAA SWAP1 DUP3 PUSH2 0x8EB JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP5 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x1 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 SWAP5 SWAP1 SWAP5 SSTORE DUP1 MLOAD DUP6 DUP2 MSTORE SWAP1 MLOAD SWAP2 SWAP4 SWAP3 DUP8 AND SWAP3 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP2 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP POP POP JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xE1 PUSH23 0xD9E4720C018E9D038D3F53617FCEBBE9BEC359B6E800E8 0xE3 0x4A SLOAD STATICCALL DUP14 0x23 0xBA PUSH5 0x736F6C6343 STOP MOD 0xC STOP CALLER ",
          "sourceMap": "97:213:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:47:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:156;;;;;;;;;;;;;;;;-1:-1:-1;2345:156:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;379:33;;;:::i;:::-;;;;;;;;;;;;;;;;2665:310;;;;;;;;;;;;;;;;-1:-1:-1;2665:310:0;;;;;;;;;;;;;;;;;;:::i;707:117::-;;;:::i;328:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;555:40;;;:::i;134:23:22:-;;;:::i;419:50:0:-;;;;;;;;;;;;;;;;-1:-1:-1;419:50:0;;;;:::i;831:47::-;;;;;;;;;;;;;;;;-1:-1:-1;831:47:0;;;;:::i;274:::-;;;:::i;2509:148::-;;;;;;;;;;;;;;;;-1:-1:-1;2509:148:0;;;;;;;;;:::i;2983:677::-;;;;;;;;;;;;;;;;-1:-1:-1;2983:677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;476:70;;;;;;;;;;;;;;;;-1:-1:-1;476:70:0;;;;;;;;;;;:::i;220:47::-;;;;;;;;;;;;;;;;;;;:::o;2345:156::-;2418:4;2435:36;2444:10;2456:7;2465:5;2435:8;:36::i;:::-;-1:-1:-1;2489:4:0;2345:156;;;;;:::o;379:33::-;;;;:::o;2665:310::-;2773:15;;;2752:4;2773:15;;;:9;:15;;;;;;;;2789:10;2773:27;;;;;;;;2809:2;2773:39;2769:140;;2859:15;;;;;;;:9;:15;;;;;;;;2875:10;2859:27;;;;;;;;:38;;2891:5;2859:31;:38::i;:::-;2829:15;;;;;;;:9;:15;;;;;;;;2845:10;2829:27;;;;;;;:68;2769:140;2919:26;2929:4;2935:2;2939:5;2919:9;:26::i;:::-;-1:-1:-1;2963:4:0;2665:310;;;;;:::o;707:117::-;758:66;707:117;:::o;328:44::-;370:2;328:44;:::o;555:40::-;;;;:::o;134:23:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;419:50:0:-;;;;;;;;;;;;;:::o;831:47::-;;;;;;;;;;;;;:::o;274:::-;;;;;;;;;;;;;;;;;;;:::o;2509:148::-;2578:4;2595:32;2605:10;2617:2;2621:5;2595:9;:32::i;2983:677::-;3138:15;3126:8;:27;;3118:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3289:16;;3385:13;;;;3184:14;3385:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3334:77;;758:66;3334:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3324:88;;;;;;3225:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:237;;;;;;;;;3476:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3184:14;;3385:15;3476:26;;;;;-1:-1:-1;3476:26:0;;;;;;;;;;3385:15;3476:26;;;;;;;;;;;;;;;-1:-1:-1;;3476:26:0;;;;;;-1:-1:-1;;3521:30:0;;;;;;;:59;;;3575:5;3555:25;;:16;:25;;;3521:59;3513:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3621:31;3630:5;3637:7;3646:5;3621:8;:31::i;:::-;2983:677;;;;;;;;;:::o;476:70::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1939:169:0;2020:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2069:31;;;;;;;;;;;;;;;;;1939:169;;;:::o;333:129:17:-;417:5;;;412:16;;;;404:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2116:221:0;2211:15;;;;;;;:9;:15;;;;;;:26;;2231:5;2211:19;:26::i;:::-;2193:15;;;;;;;;:9;:15;;;;;;:44;;;;2264:13;;;;;;;:24;;2282:5;2264:17;:24::i;:::-;2248:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2304:25;;;;;;;2248:13;;2304:25;;;;;;;;;;;;;2116:221;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"_totalSupply\",\"type\":\"uint256\"},{\"internalType\":\"string\",\"name\":\"_name\",\"type\":\"string\"}],\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"DOMAIN_SEPARATOR\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"PERMIT_TYPEHASH\",\"outputs\":[{\"internalType\":\"bytes32\",\"name\":\"\",\"type\":\"bytes32\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"nonces\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"},{\"internalType\":\"uint8\",\"name\":\"v\",\"type\":\"uint8\"},{\"internalType\":\"bytes32\",\"name\":\"r\",\"type\":\"bytes32\"},{\"internalType\":\"bytes32\",\"name\":\"s\",\"type\":\"bytes32\"}],\"name\":\"permit\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"tokenName\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/ERC20.sol\":\"ERC20\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/FeSwapERC20.sol\":{\"keccak256\":\"0xbf63cdbef80c105090a8ccfcf292e2932bd6b22ca661dc4fc9b9de855c327f02\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://50cf9770bc6279400f3eb0b27a20fad862be24af16f13efd9515f423557eefdc\",\"dweb:/ipfs/QmZz7dA3QVsVykNnt3kMyNvnnqybftPktbVGAsPf34bY8w\"]},\"contracts/interfaces/IFeSwapERC20.sol\":{\"keccak256\":\"0xa5e268102ef56f14b2e902817ba225a43a2912aefd2a737ae7372439be37e3fa\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://96aac72ae43358c1dc21f4c9ff5613601d1c456b4a5c0af98fa760a63567880c\",\"dweb:/ipfs/QmTj5P6LQqHdntBWqxJVaj9XS1oUNQy6Nnr4GW6ExE2HDT\"]},\"contracts/libraries/SafeMath.sol\":{\"keccak256\":\"0xf04a5109c9205c67202d408fdf6ce80ec28fcd93702bdba158d88aae5a6573ad\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://1ee35c811f41747d96f6946388815e9bf4d6c72dd3ddec7f1de3815979f3f415\",\"dweb:/ipfs/QmZFQ9oBd3DyZbzNf7eTesDxjNxyzpyPcxSC8w9RVRpNPM\"]},\"contracts/test/ERC20.sol\":{\"keccak256\":\"0x592e2f350a80d8e2c664b31d73681525b84fcb7edc80ae75c29f73d1cfe4f647\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://d27893d7a6a9c420b285fa565d6c4663839ee81849c4c3d5c43977cca99c1518\",\"dweb:/ipfs/QmZdW11Pfevb7xWDP2r5q3iihSr49iScQ1uhzDNseuaHX3\"]}},\"version\":1}",
      "bytecode": "60806040523480156200001157600080fd5b5060405162000ee438038062000ee4833981810160405260408110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82516401000000008111828201881017156200009057600080fd5b82525081516020918201929091019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b5060408181018152600682526504665537761760d41b6020928301528051808201825260018152603160f81b9083015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528251808303909101815260c0909101909152805191012060035550620001ca915033905083620001e8565b8051620001df906005906020840190620002ef565b5050506200038b565b62000204816000546200029060201b620008eb1790919060201c565b60009081556001600160a01b03831681526001602090815260409091205462000238918390620008eb62000290821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015620002e9576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200033257805160ff191683800117855562000362565b8280016001018555821562000362579182015b828111156200036257825182559160200191906001019062000345565b506200037092915062000374565b5090565b5b8082111562000370576000815560010162000375565b610b49806200039b6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636c02a9311161008c57806395d89b411161006657806395d89b41146102b2578063a9059cbb146102ba578063d505accf146102f3578063dd62ed3e14610353576100ea565b80636c02a9311461024457806370a082311461024c5780637ecebe001461027f576100ea565b806323b872dd116100c857806323b872dd146101d357806330adf81f14610216578063313ce5671461021e5780633644e5151461023c576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f761038e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103c7565b604080519115158252519081900360200190f35b6101c16103de565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103e4565b6101c16104bd565b6102266104e1565b6040805160ff9092168252519081900360200190f35b6101c16104e6565b6100f76104ec565b6101c16004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610598565b6101c16004803603602081101561029557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105aa565b6100f76105bc565b6101a5600480360360408110156102d057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f5565b610351600480360360e081101561030957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610602565b005b6101c16004803603604081101561036957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108ce565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103d433848461095d565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104a85773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290205461047690836109cc565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104b3848484610a3e565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105905780601f1061056557610100808354040283529160200191610590565b820191906000526020600020905b81548152906001019060200180831161057357829003601f168201915b505050505081565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103d4338484610a3e565b4284101561067157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa1580156107d2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061084d57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b6108c389898961095d565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610a6e90826109cc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054610aaa90826108eb565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fea2646970667358221220e176d9e4720c018e9d038d3f53617fcebbe9bec359b6e800e8e34a54fa8d23ba64736f6c634300060c0033",
      "bin": "60806040523480156200001157600080fd5b5060405162000ee438038062000ee4833981810160405260408110156200003757600080fd5b8151602083018051604051929492938301929190846401000000008211156200005f57600080fd5b9083019060208201858111156200007557600080fd5b82516401000000008111828201881017156200009057600080fd5b82525081516020918201929091019080838360005b83811015620000bf578181015183820152602001620000a5565b50505050905090810190601f168015620000ed5780820380516001836020036101000a031916815260200191505b5060408181018152600682526504665537761760d41b6020928301528051808201825260018152603160f81b9083015280517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f818401527f84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd818301527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc660608201524660808201523060a0808301919091528251808303909101815260c0909101909152805191012060035550620001ca915033905083620001e8565b8051620001df906005906020840190620002ef565b5050506200038b565b62000204816000546200029060201b620008eb1790919060201c565b60009081556001600160a01b03831681526001602090815260409091205462000238918390620008eb62000290821b17901c565b6001600160a01b03831660008181526001602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b80820182811015620002e9576040805162461bcd60e51b815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b92915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200033257805160ff191683800117855562000362565b8280016001018555821562000362579182015b828111156200036257825182559160200191906001019062000345565b506200037092915062000374565b5090565b5b8082111562000370576000815560010162000375565b610b49806200039b6000396000f3fe608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636c02a9311161008c57806395d89b411161006657806395d89b41146102b2578063a9059cbb146102ba578063d505accf146102f3578063dd62ed3e14610353576100ea565b80636c02a9311461024457806370a082311461024c5780637ecebe001461027f576100ea565b806323b872dd116100c857806323b872dd146101d357806330adf81f14610216578063313ce5671461021e5780633644e5151461023c576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f761038e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103c7565b604080519115158252519081900360200190f35b6101c16103de565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103e4565b6101c16104bd565b6102266104e1565b6040805160ff9092168252519081900360200190f35b6101c16104e6565b6100f76104ec565b6101c16004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610598565b6101c16004803603602081101561029557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105aa565b6100f76105bc565b6101a5600480360360408110156102d057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f5565b610351600480360360e081101561030957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610602565b005b6101c16004803603604081101561036957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108ce565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103d433848461095d565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104a85773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290205461047690836109cc565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104b3848484610a3e565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105905780601f1061056557610100808354040283529160200191610590565b820191906000526020600020905b81548152906001019060200180831161057357829003601f168201915b505050505081565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103d4338484610a3e565b4284101561067157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa1580156107d2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061084d57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b6108c389898961095d565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610a6e90826109cc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054610aaa90826108eb565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fea2646970667358221220e176d9e4720c018e9d038d3f53617fcebbe9bec359b6e800e8e34a54fa8d23ba64736f6c634300060c0033",
      "bin-runtime": "608060405234801561001057600080fd5b50600436106100ea5760003560e01c80636c02a9311161008c57806395d89b411161006657806395d89b41146102b2578063a9059cbb146102ba578063d505accf146102f3578063dd62ed3e14610353576100ea565b80636c02a9311461024457806370a082311461024c5780637ecebe001461027f576100ea565b806323b872dd116100c857806323b872dd146101d357806330adf81f14610216578063313ce5671461021e5780633644e5151461023c576100ea565b806306fdde03146100ef578063095ea7b31461016c57806318160ddd146101b9575b600080fd5b6100f761038e565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610131578181015183820152602001610119565b50505050905090810190601f16801561015e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6101a56004803603604081101561018257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356103c7565b604080519115158252519081900360200190f35b6101c16103de565b60408051918252519081900360200190f35b6101a5600480360360608110156101e957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602081013590911690604001356103e4565b6101c16104bd565b6102266104e1565b6040805160ff9092168252519081900360200190f35b6101c16104e6565b6100f76104ec565b6101c16004803603602081101561026257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610598565b6101c16004803603602081101561029557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166105aa565b6100f76105bc565b6101a5600480360360408110156102d057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356105f5565b610351600480360360e081101561030957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135610602565b005b6101c16004803603604081101561036957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160200135166108ce565b6040518060400160405280600681526020017f466553776170000000000000000000000000000000000000000000000000000081525081565b60006103d433848461095d565b5060015b92915050565b60005481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526002602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146104a85773ffffffffffffffffffffffffffffffffffffffff8416600090815260026020908152604080832033845290915290205461047690836109cc565b73ffffffffffffffffffffffffffffffffffffffff851660009081526002602090815260408083203384529091529020555b6104b3848484610a3e565b5060019392505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60035481565b6005805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156105905780601f1061056557610100808354040283529160200191610590565b820191906000526020600020905b81548152906001019060200180831161057357829003601f168201915b505050505081565b60016020526000908152604090205481565b60046020526000908152604090205481565b6040518060400160405280600481526020017f464553500000000000000000000000000000000000000000000000000000000081525081565b60006103d4338484610a3e565b4284101561067157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f4665537761703a20455850495245440000000000000000000000000000000000604482015290519081900360640190fd5b60035473ffffffffffffffffffffffffffffffffffffffff80891660008181526004602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa1580156107d2573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff81161580159061084d57508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b6108b857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f4665537761703a20494e56414c49445f5349474e415455524500000000000000604482015290519081900360640190fd5b6108c389898961095d565b505050505050505050565b600260209081526000928352604080842090915290825290205481565b808201828110156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff808416600081815260026020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b808203828111156103d857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260016020526040902054610a6e90826109cc565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600160205260408082209390935590841681522054610aaa90826108eb565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526001602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a350505056fea2646970667358221220e176d9e4720c018e9d038d3f53617fcebbe9bec359b6e800e8e34a54fa8d23ba64736f6c634300060c0033",
      "srcmap": "97:213:22:-:0;;;170:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;170:137:22;;;;;;;;;;-1:-1:-1;170:137:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;170:137:22;1367:4:0;;;;;;;;-1:-1:-1;;;1367:4:0;;;;;1402:10;;;;;;;;;;-1:-1:-1;;;1402:10:0;;;;1208:278;;1237:95;1208:278;;;;1351:22;1208:278;;;;1392:21;1208:278;;;;1135:9;1208:278;;;;1466:4;1208:278;;;;;;;;;;;;;;;;;;;;;;;;;1184:313;;;;;1165:16;:332;-1:-1:-1;240:31:22;;-1:-1:-1;246:10:22;;-1:-1:-1;258:12:22;240:5;:31::i;:::-;282:17;;;;:9;;:17;;;;;:::i;:::-;;170:137;;97:213;;1513:201:0;1586:22;1602:5;1586:11;;:15;;;;;;:22;;;;:::i;:::-;1572:11;:36;;;-1:-1:-1;;;;;1635:13:0;;;;:9;:13;;;;;;;;;:24;;1653:5;;1635:17;;;;;:24;;:::i;:::-;-1:-1:-1;;;;;1619:13:0;;;;;;:9;:13;;;;;;;;:40;;;;1675:31;;;;;;;1619:13;;;;1675:31;;;;;;;;;;1513:201;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;-1:-1:-1;;;268:49:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;197:128;;;;:::o;97:213:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;97:213:22;;;-1:-1:-1;97:213:22;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "97:213:22:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:47:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2345:156;;;;;;;;;;;;;;;;-1:-1:-1;2345:156:0;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;379:33;;;:::i;:::-;;;;;;;;;;;;;;;;2665:310;;;;;;;;;;;;;;;;-1:-1:-1;2665:310:0;;;;;;;;;;;;;;;;;;:::i;707:117::-;;;:::i;328:44::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;555:40;;;:::i;134:23:22:-;;;:::i;419:50:0:-;;;;;;;;;;;;;;;;-1:-1:-1;419:50:0;;;;:::i;831:47::-;;;;;;;;;;;;;;;;-1:-1:-1;831:47:0;;;;:::i;274:::-;;;:::i;2509:148::-;;;;;;;;;;;;;;;;-1:-1:-1;2509:148:0;;;;;;;;;:::i;2983:677::-;;;;;;;;;;;;;;;;-1:-1:-1;2983:677:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;476:70;;;;;;;;;;;;;;;;-1:-1:-1;476:70:0;;;;;;;;;;;:::i;220:47::-;;;;;;;;;;;;;;;;;;;:::o;2345:156::-;2418:4;2435:36;2444:10;2456:7;2465:5;2435:8;:36::i;:::-;-1:-1:-1;2489:4:0;2345:156;;;;;:::o;379:33::-;;;;:::o;2665:310::-;2773:15;;;2752:4;2773:15;;;:9;:15;;;;;;;;2789:10;2773:27;;;;;;;;2809:2;2773:39;2769:140;;2859:15;;;;;;;:9;:15;;;;;;;;2875:10;2859:27;;;;;;;;:38;;2891:5;2859:31;:38::i;:::-;2829:15;;;;;;;:9;:15;;;;;;;;2845:10;2829:27;;;;;;;:68;2769:140;2919:26;2929:4;2935:2;2939:5;2919:9;:26::i;:::-;-1:-1:-1;2963:4:0;2665:310;;;;;:::o;707:117::-;758:66;707:117;:::o;328:44::-;370:2;328:44;:::o;555:40::-;;;;:::o;134:23:22:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;419:50:0:-;;;;;;;;;;;;;:::o;831:47::-;;;;;;;;;;;;;:::o;274:::-;;;;;;;;;;;;;;;;;;;:::o;2509:148::-;2578:4;2595:32;2605:10;2617:2;2621:5;2595:9;:32::i;2983:677::-;3138:15;3126:8;:27;;3118:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3289:16;;3385:13;;;;3184:14;3385:13;;;:6;:13;;;;;;;;:15;;;;;;;;;3334:77;;758:66;3334:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3324:88;;;;;;3225:202;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3201:237;;;;;;;;;3476:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3184:14;;3385:15;3476:26;;;;;-1:-1:-1;3476:26:0;;;;;;;;;;3385:15;3476:26;;;;;;;;;;;;;;;-1:-1:-1;;3476:26:0;;;;;;-1:-1:-1;;3521:30:0;;;;;;;:59;;;3575:5;3555:25;;:16;:25;;;3521:59;3513:97;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3621:31;3630:5;3637:7;3646:5;3621:8;:31::i;:::-;2983:677;;;;;;;;;:::o;476:70::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;197:128:17:-;281:5;;;276:16;;;;268:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1939:169:0;2020:16;;;;;;;;:9;:16;;;;;;;;:25;;;;;;;;;;;;;:33;;;2069:31;;;;;;;;;;;;;;;;;1939:169;;;:::o;333:129:17:-;417:5;;;412:16;;;;404:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2116:221:0;2211:15;;;;;;;:9;:15;;;;;;:26;;2231:5;2211:19;:26::i;:::-;2193:15;;;;;;;;:9;:15;;;;;;:44;;;;2264:13;;;;;;;:24;;2282:5;2264:17;:24::i;:::-;2248:13;;;;;;;;:9;:13;;;;;;;;;:40;;;;2304:25;;;;;;;2248:13;;2304:25;;;;;;;;;;;;;2116:221;;;:::o"
    },
    "contracts/test/RouterEventEmitter.sol:RouterEventEmitter": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": false,
              "internalType": "uint256[]",
              "name": "amounts",
              "type": "uint256[]"
            }
          ],
          "name": "Amounts",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "encodeFunc",
          "outputs": [
            {
              "internalType": "bytes",
              "name": "returnData",
              "type": "bytes"
            }
          ],
          "stateMutability": "pure",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapETHForExactTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactETHForTokens",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountIn",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountOutMin",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapExactTokensForTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactETH",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "router",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "amountOut",
              "type": "uint256"
            },
            {
              "internalType": "uint256",
              "name": "amountInMax",
              "type": "uint256"
            },
            {
              "internalType": "address[]",
              "name": "path",
              "type": "address[]"
            },
            {
              "internalType": "address",
              "name": "to",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "deadline",
              "type": "uint256"
            }
          ],
          "name": "swapTokensForExactTokens",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "stateMutability": "payable",
          "type": "receive"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "608060405234801561001057600080fd5b50611215806100206000396000f3fe6080604052600436106100745760003560e01c80639c91fcb51161004e5780639c91fcb51461033d578063b05f579e146103ff578063fa3219d5146104ad578063fde1adda1461056f5761007b565b806322b5841014610080578063375734d9146101445780635f3269ea146102065761007b565b3661007b57005b600080fd5b34801561008c57600080fd5b50610142600480360360c08110156100a357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100e757600080fd5b8201836020820111156100f957600080fd5b8035906020019184602083028401116401000000008311171561011b57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561061d565b005b34801561015057600080fd5b50610142600480360360c081101561016757600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101ab57600080fd5b8201836020820111156101bd57600080fd5b803590602001918460208302840111640100000000831117156101df57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356108f1565b34801561021257600080fd5b506102c8600480360360c081101561022957600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026d57600080fd5b82018360208201111561027f57600080fd5b803590602001918460208302840111640100000000831117156102a157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a33565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034957600080fd5b50610142600480360360c081101561036057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460208302840111640100000000831117156103d857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b39565b610142600480360360a081101561041557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561045257600080fd5b82018360208201111561046457600080fd5b8035906020019184602083028401116401000000008311171561048657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c7b565b3480156104b957600080fd5b50610142600480360360c08110156104d057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561051457600080fd5b82018360208201111561052657600080fd5b8035906020019184602083028401116401000000008311171561054857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f46565b610142600480360360a081101561058557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156105c257600080fd5b8201836020820111156105d457600080fd5b803590602001918460208302840111640100000000831117156105f657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611088565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146107c0576040519150601f19603f3d011682016040523d82523d6000602084013e6107c5565b606091505b5091509150816107d157fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b381806020019051602081101561080757600080fd5b810190808051604051939291908464010000000082111561082757600080fd5b90830190602082018581111561083c57600080fd5b825186602082028301116401000000008211171561085957600080fd5b82525081516020918201928201910280838360005b8381101561088657818101518382015260200161086e565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108d35781810151838201526020016108bb565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b60606338ed173960e01b87878787878760405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f9093018316909401848103909201845252506020810180517fffffffff000000000000000000000000000000000000000000000000000000009b909b167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909b169a909a1790995250969f9e505050505050505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d79565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610e16576040519150601f19603f3d011682016040523d82523d6000602084013e610e1b565b606091505b509150915081610e2757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610e5d57600080fd5b8101908080516040519392919084640100000000821115610e7d57600080fd5b908301906020820185811115610e9257600080fd5b8251866020820283011164010000000082111715610eaf57600080fd5b82525081516020918201928201910280838360005b83811015610edc578181015183820152602001610ec4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610f29578181015183820152602001610f11565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d7956fea2646970667358221220229b824d2404a97fe03a414d1d9aadcb175513f90c2abe77360b0f0d86aca15764736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE CALLVALUE DUP1 ISZERO PUSH2 0x10 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1215 DUP1 PUSH2 0x20 PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x74 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C91FCB5 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x9C91FCB5 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xB05F579E EQ PUSH2 0x3FF JUMPI DUP1 PUSH4 0xFA3219D5 EQ PUSH2 0x4AD JUMPI DUP1 PUSH4 0xFDE1ADDA EQ PUSH2 0x56F JUMPI PUSH2 0x7B JUMP JUMPDEST DUP1 PUSH4 0x22B58410 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x375734D9 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x5F3269EA EQ PUSH2 0x206 JUMPI PUSH2 0x7B JUMP JUMPDEST CALLDATASIZE PUSH2 0x7B JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x61D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA33 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x302 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2EA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x32F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB39 JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x514 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF46 JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8803DBEE PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x760 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7C0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7C5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x7D1 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x886 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x86E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8BB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x760 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F SWAP1 SWAP4 ADD DUP4 AND SWAP1 SWAP5 ADD DUP5 DUP2 SUB SWAP1 SWAP3 ADD DUP5 MSTORE MSTORE POP PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP12 SWAP1 SWAP12 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP12 AND SWAP11 SWAP1 SWAP11 OR SWAP1 SWAP10 MSTORE POP SWAP7 SWAP16 SWAP15 POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18CBAFE5 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x760 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFB3BDB41 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xDB6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xD79 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE16 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE1B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xE27 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xE7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xE92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xEAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEC4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF29 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF11 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4A25D94A PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x760 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7FF36AB5 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND SWAP1 SWAP5 ADD DUP3 DUP2 SUB SWAP1 SWAP5 ADD DUP3 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP14 AND SWAP13 SWAP1 SWAP13 OR DUP13 MSTORE SWAP3 MLOAD DUP2 MLOAD SWAP2 SWAP12 SWAP1 SWAP11 POP DUP11 SWAP10 POP SWAP8 POP SWAP6 POP DUP6 SWAP5 POP DUP8 SWAP4 POP DUP7 SWAP3 POP POP DUP4 LT PUSH2 0xDB6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xD79 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 SWAP12 DUP3 0x4D 0x24 DIV 0xA9 PUSH32 0xE03A414D1D9AADCB175513F90C2ABE77360B0F0D86ACA15764736F6C63430006 0xC STOP CALLER ",
          "sourceMap": "110:3598:23:-:0;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600436106100745760003560e01c80639c91fcb51161004e5780639c91fcb51461033d578063b05f579e146103ff578063fa3219d5146104ad578063fde1adda1461056f5761007b565b806322b5841014610080578063375734d9146101445780635f3269ea146102065761007b565b3661007b57005b600080fd5b34801561008c57600080fd5b50610142600480360360c08110156100a357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100e757600080fd5b8201836020820111156100f957600080fd5b8035906020019184602083028401116401000000008311171561011b57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561061d565b005b34801561015057600080fd5b50610142600480360360c081101561016757600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101ab57600080fd5b8201836020820111156101bd57600080fd5b803590602001918460208302840111640100000000831117156101df57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356108f1565b34801561021257600080fd5b506102c8600480360360c081101561022957600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026d57600080fd5b82018360208201111561027f57600080fd5b803590602001918460208302840111640100000000831117156102a157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a33565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034957600080fd5b50610142600480360360c081101561036057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460208302840111640100000000831117156103d857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b39565b610142600480360360a081101561041557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561045257600080fd5b82018360208201111561046457600080fd5b8035906020019184602083028401116401000000008311171561048657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c7b565b3480156104b957600080fd5b50610142600480360360c08110156104d057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561051457600080fd5b82018360208201111561052657600080fd5b8035906020019184602083028401116401000000008311171561054857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f46565b610142600480360360a081101561058557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156105c257600080fd5b8201836020820111156105d457600080fd5b803590602001918460208302840111640100000000831117156105f657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611088565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146107c0576040519150601f19603f3d011682016040523d82523d6000602084013e6107c5565b606091505b5091509150816107d157fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b381806020019051602081101561080757600080fd5b810190808051604051939291908464010000000082111561082757600080fd5b90830190602082018581111561083c57600080fd5b825186602082028301116401000000008211171561085957600080fd5b82525081516020918201928201910280838360005b8381101561088657818101518382015260200161086e565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108d35781810151838201526020016108bb565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b60606338ed173960e01b87878787878760405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f9093018316909401848103909201845252506020810180517fffffffff000000000000000000000000000000000000000000000000000000009b909b167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909b169a909a1790995250969f9e505050505050505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d79565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610e16576040519150601f19603f3d011682016040523d82523d6000602084013e610e1b565b606091505b509150915081610e2757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610e5d57600080fd5b8101908080516040519392919084640100000000821115610e7d57600080fd5b908301906020820185811115610e9257600080fd5b8251866020820283011164010000000082111715610eaf57600080fd5b82525081516020918201928201910280838360005b83811015610edc578181015183820152602001610ec4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610f29578181015183820152602001610f11565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d7956fea2646970667358221220229b824d2404a97fe03a414d1d9aadcb175513f90c2abe77360b0f0d86aca15764736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0x74 JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x9C91FCB5 GT PUSH2 0x4E JUMPI DUP1 PUSH4 0x9C91FCB5 EQ PUSH2 0x33D JUMPI DUP1 PUSH4 0xB05F579E EQ PUSH2 0x3FF JUMPI DUP1 PUSH4 0xFA3219D5 EQ PUSH2 0x4AD JUMPI DUP1 PUSH4 0xFDE1ADDA EQ PUSH2 0x56F JUMPI PUSH2 0x7B JUMP JUMPDEST DUP1 PUSH4 0x22B58410 EQ PUSH2 0x80 JUMPI DUP1 PUSH4 0x375734D9 EQ PUSH2 0x144 JUMPI DUP1 PUSH4 0x5F3269EA EQ PUSH2 0x206 JUMPI PUSH2 0x7B JUMP JUMPDEST CALLDATASIZE PUSH2 0x7B JUMPI STOP JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x8C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0xA3 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0xE7 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0xF9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x11B JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x61D JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x150 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x167 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x1AB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x1BD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x1DF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x8F1 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x212 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x2C8 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x229 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x26D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x2A1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xA33 JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x302 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x2EA JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x32F JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x349 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x360 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x3A4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x3B6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x3D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xB39 JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x415 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x452 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x464 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x486 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xC7B JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x4B9 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xC0 DUP2 LT ISZERO PUSH2 0x4D0 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 PUSH1 0x40 DUP3 ADD CALLDATALOAD SWAP2 SWAP1 DUP2 ADD SWAP1 PUSH1 0x80 DUP2 ADD PUSH1 0x60 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x514 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x526 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x548 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0xF46 JUMP JUMPDEST PUSH2 0x142 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0xA0 DUP2 LT ISZERO PUSH2 0x585 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP3 CALLDATALOAD AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP2 DUP2 ADD SWAP1 PUSH1 0x60 DUP2 ADD PUSH1 0x40 DUP3 ADD CALLDATALOAD PUSH5 0x100000000 DUP2 GT ISZERO PUSH2 0x5C2 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 ADD DUP4 PUSH1 0x20 DUP3 ADD GT ISZERO PUSH2 0x5D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP1 CALLDATALOAD SWAP1 PUSH1 0x20 ADD SWAP2 DUP5 PUSH1 0x20 DUP4 MUL DUP5 ADD GT PUSH5 0x100000000 DUP4 GT OR ISZERO PUSH2 0x5F6 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP2 SWAP4 POP SWAP2 POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x1088 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x8803DBEE PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0x760 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0x7C0 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0x7C5 JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0x7D1 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x807 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0x827 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0x83C JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0x859 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x886 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x86E JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x8D3 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0x8BB JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x760 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST PUSH1 0x60 PUSH4 0x38ED1739 PUSH1 0xE0 SHL DUP8 DUP8 DUP8 DUP8 DUP8 DUP8 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 PUSH1 0x1F SWAP1 SWAP4 ADD DUP4 AND SWAP1 SWAP5 ADD DUP5 DUP2 SUB SWAP1 SWAP3 ADD DUP5 MSTORE MSTORE POP PUSH1 0x20 DUP2 ADD DUP1 MLOAD PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP12 SWAP1 SWAP12 AND PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF SWAP1 SWAP12 AND SWAP11 SWAP1 SWAP11 OR SWAP1 SWAP10 MSTORE POP SWAP7 SWAP16 SWAP15 POP POP POP POP POP POP POP POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x18CBAFE5 PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x760 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0xFB3BDB41 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP7 POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 JUMPDEST PUSH1 0x20 DUP4 LT PUSH2 0xDB6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xD79 JUMP JUMPDEST PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB DUP1 NOT DUP3 MLOAD AND DUP2 DUP5 MLOAD AND DUP1 DUP3 OR DUP6 MSTORE POP POP POP POP POP POP SWAP1 POP ADD SWAP2 POP POP PUSH1 0x0 PUSH1 0x40 MLOAD DUP1 DUP4 SUB DUP2 DUP6 GAS DELEGATECALL SWAP2 POP POP RETURNDATASIZE DUP1 PUSH1 0x0 DUP2 EQ PUSH2 0xE16 JUMPI PUSH1 0x40 MLOAD SWAP2 POP PUSH1 0x1F NOT PUSH1 0x3F RETURNDATASIZE ADD AND DUP3 ADD PUSH1 0x40 MSTORE RETURNDATASIZE DUP3 MSTORE RETURNDATASIZE PUSH1 0x0 PUSH1 0x20 DUP5 ADD RETURNDATACOPY PUSH2 0xE1B JUMP JUMPDEST PUSH1 0x60 SWAP2 POP JUMPDEST POP SWAP2 POP SWAP2 POP DUP2 PUSH2 0xE27 JUMPI INVALID JUMPDEST PUSH32 0x4CC17991E3610E3400E74A8306AA421DAAEE1E3446FA22B490604610999E10B3 DUP2 DUP1 PUSH1 0x20 ADD SWAP1 MLOAD PUSH1 0x20 DUP2 LT ISZERO PUSH2 0xE5D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP2 ADD SWAP1 DUP1 DUP1 MLOAD PUSH1 0x40 MLOAD SWAP4 SWAP3 SWAP2 SWAP1 DUP5 PUSH5 0x100000000 DUP3 GT ISZERO PUSH2 0xE7D JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST SWAP1 DUP4 ADD SWAP1 PUSH1 0x20 DUP3 ADD DUP6 DUP2 GT ISZERO PUSH2 0xE92 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MLOAD DUP7 PUSH1 0x20 DUP3 MUL DUP4 ADD GT PUSH5 0x100000000 DUP3 GT OR ISZERO PUSH2 0xEAF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST DUP3 MSTORE POP DUP2 MLOAD PUSH1 0x20 SWAP2 DUP3 ADD SWAP3 DUP3 ADD SWAP2 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xEDC JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xEC4 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD PUSH1 0x40 MSTORE POP POP POP PUSH1 0x40 MLOAD DUP1 DUP1 PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP4 DUP2 DUP2 MLOAD DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 PUSH1 0x20 MUL DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0xF29 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF11 JUMP JUMPDEST POP POP POP POP SWAP1 POP ADD SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 LOG1 POP POP POP POP POP POP POP POP JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP9 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x4A25D94A PUSH1 0xE0 SHL DUP10 DUP10 DUP10 DUP10 DUP10 DUP10 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP8 DUP2 MSTORE PUSH1 0x20 ADD DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP2 DUP5 ADD MSTORE PUSH1 0x1F NOT PUSH1 0x1F DUP3 ADD AND SWAP1 POP DUP1 DUP4 ADD SWAP3 POP POP POP SWAP8 POP POP POP POP POP POP POP POP PUSH1 0x40 MLOAD PUSH1 0x20 DUP2 DUP4 SUB SUB DUP2 MSTORE SWAP1 PUSH1 0x40 MSTORE SWAP1 PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF NOT AND PUSH1 0x20 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 DUP2 DUP4 AND OR DUP4 MSTORE POP POP POP POP PUSH1 0x40 MLOAD DUP1 DUP3 DUP1 MLOAD SWAP1 PUSH1 0x20 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x20 DUP4 LT PUSH2 0x760 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0x723 JUMP JUMPDEST PUSH1 0x0 PUSH1 0x60 DUP8 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH4 0x7FF36AB5 PUSH1 0xE0 SHL DUP9 DUP9 DUP9 DUP9 DUP9 PUSH1 0x40 MLOAD PUSH1 0x24 ADD DUP1 DUP7 DUP2 MSTORE PUSH1 0x20 ADD DUP1 PUSH1 0x20 ADD DUP5 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND DUP2 MSTORE PUSH1 0x20 ADD DUP4 DUP2 MSTORE PUSH1 0x20 ADD DUP3 DUP2 SUB DUP3 MSTORE DUP7 DUP7 DUP3 DUP2 DUP2 MSTORE PUSH1 0x20 ADD SWAP3 POP PUSH1 0x20 MUL DUP1 DUP3 DUP5 CALLDATACOPY PUSH1 0x0 DUP4 DUP3 ADD MSTORE PUSH1 0x40 DUP1 MLOAD PUSH1 0x1F SWAP1 SWAP3 ADD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 DUP2 AND SWAP1 SWAP5 ADD DUP3 DUP2 SUB SWAP1 SWAP5 ADD DUP3 MSTORE SWAP3 DUP4 MSTORE PUSH1 0x20 DUP1 DUP3 ADD DUP1 MLOAD PUSH28 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH32 0xFFFFFFFF00000000000000000000000000000000000000000000000000000000 SWAP1 SWAP14 AND SWAP13 SWAP1 SWAP13 OR DUP13 MSTORE SWAP3 MLOAD DUP2 MLOAD SWAP2 SWAP12 SWAP1 SWAP11 POP DUP11 SWAP10 POP SWAP8 POP SWAP6 POP DUP6 SWAP5 POP DUP8 SWAP4 POP DUP7 SWAP3 POP POP DUP4 LT PUSH2 0xDB6 JUMPI DUP1 MLOAD DUP3 MSTORE PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFE0 SWAP1 SWAP3 ADD SWAP2 PUSH1 0x20 SWAP2 DUP3 ADD SWAP2 ADD PUSH2 0xD79 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0x22 SWAP12 DUP3 0x4D 0x24 DIV 0xA9 PUSH32 0xE03A414D1D9AADCB175513F90C2ABE77360B0F0D86ACA15764736F6C63430006 0xC STOP CALLER ",
          "sourceMap": "110:3598:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1165:518;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1165:518:23;-1:-1:-1;1165:518:23;;;;;;;;;:::i;:::-;;639;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:518:23;-1:-1:-1;639:518:23;;;;;;;;;:::i;220:411::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;220:411:23;-1:-1:-1;220:411:23;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2705:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2705:512:23;-1:-1:-1;2705:512:23;;;;;;;;;:::i;3225:480::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3225:480:23;-1:-1:-1;3225:480:23;;;;;;;;;:::i;2185:512::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2185:512:23;-1:-1:-1;2185:512:23;;;;;;;;;:::i;1691:486::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1691:486:23;-1:-1:-1;1691:486:23;;;;;;;;;:::i;1165:518::-;1383:12;1397:23;1424:6;:19;;1481:55;;;1538:9;1549:11;1562:4;;1568:2;1572:8;1444:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1424:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1382:210;;;;1610:7;1603:15;;;;1634:41;1653:10;1642:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1642:32:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1165:518;;;;;;;;;:::o;639:::-;857:12;871:23;898:6;:19;;955:55;;;1012:8;1022:12;1036:4;;1042:2;1046:8;918:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;898:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:411;426:23;513:55;;;570:8;580:12;594:4;;600:2;604:8;476:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;476:147:23;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;476:147:23;;;-1:-1:-1;;;;;;;;;;;;;;;220:411:23:o;2705:512::-;2920:12;2934:23;2961:6;:19;;3018:52;;;3072:8;3082:12;3096:4;;3102:2;3106:8;2981:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2961:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3225:480;3421:12;3435:23;3462:6;:19;;3519:52;;;3573:9;3584:4;;3590:2;3594:8;3482:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3462:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:194;;;;3632:7;3625:15;;;;3656:41;3675:10;3664:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3664:32:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3656:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3225:480;;;;;;;;:::o;2185:512::-;2400:12;2414:23;2441:6;:19;;2498:52;;;2552:9;2563:11;2576:4;;2582:2;2586:8;2461:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2441:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1691:486;1890:12;1904:23;1931:6;:19;;1988:52;;;2042:12;2056:4;;2062:2;2066:8;1951:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:155;;;;1951:134;;1931:155;;-1:-1:-1;1931:155:23;;-1:-1:-1;1951:134:23;-1:-1:-1;1931:155:23;-1:-1:-1;1931:155:23;;-1:-1:-1;1931:155:23;;-1:-1:-1;1951:134:23;;-1:-1:-1;;1931:155:23;;;;;;;;;;;;;;;;;;;;"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"amounts\",\"type\":\"uint256[]\"}],\"name\":\"Amounts\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"encodeFunc\",\"outputs\":[{\"internalType\":\"bytes\",\"name\":\"returnData\",\"type\":\"bytes\"}],\"stateMutability\":\"pure\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapETHForExactTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactETHForTokens\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountIn\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountOutMin\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapExactTokensForTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactETH\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"router\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amountOut\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"amountInMax\",\"type\":\"uint256\"},{\"internalType\":\"address[]\",\"name\":\"path\",\"type\":\"address[]\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"deadline\",\"type\":\"uint256\"}],\"name\":\"swapTokensForExactTokens\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"stateMutability\":\"payable\",\"type\":\"receive\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/RouterEventEmitter.sol\":\"RouterEventEmitter\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/interfaces/IFeSwapRouter.sol\":{\"keccak256\":\"0x84067893834807d34b847b315d9438fc4d4acee57496ea58f4be2aa39d904584\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://af382f205e3a27ee135677c2be6d7f81f8b4f96beae9fc0e0278a591ec8a8760\",\"dweb:/ipfs/QmYXmiZMNGdiXBeaHhHFiRXpBArBF8XYs5jc3ayH7CJDn2\"]},\"contracts/test/RouterEventEmitter.sol\":{\"keccak256\":\"0xb8245f8daf52c6572c33eeead448c4ad523e989386e59185071476902ca433f8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://a46305373481135ab95e8eee12724e3583c27ad376adea8352fb3d0dae4c0fe9\",\"dweb:/ipfs/QmYdskP5fdrLPSnkDTuJRmvp3oaLDCwpWPZnPQ8cFPxW9n\"]}},\"version\":1}",
      "bytecode": "608060405234801561001057600080fd5b50611215806100206000396000f3fe6080604052600436106100745760003560e01c80639c91fcb51161004e5780639c91fcb51461033d578063b05f579e146103ff578063fa3219d5146104ad578063fde1adda1461056f5761007b565b806322b5841014610080578063375734d9146101445780635f3269ea146102065761007b565b3661007b57005b600080fd5b34801561008c57600080fd5b50610142600480360360c08110156100a357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100e757600080fd5b8201836020820111156100f957600080fd5b8035906020019184602083028401116401000000008311171561011b57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561061d565b005b34801561015057600080fd5b50610142600480360360c081101561016757600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101ab57600080fd5b8201836020820111156101bd57600080fd5b803590602001918460208302840111640100000000831117156101df57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356108f1565b34801561021257600080fd5b506102c8600480360360c081101561022957600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026d57600080fd5b82018360208201111561027f57600080fd5b803590602001918460208302840111640100000000831117156102a157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a33565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034957600080fd5b50610142600480360360c081101561036057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460208302840111640100000000831117156103d857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b39565b610142600480360360a081101561041557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561045257600080fd5b82018360208201111561046457600080fd5b8035906020019184602083028401116401000000008311171561048657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c7b565b3480156104b957600080fd5b50610142600480360360c08110156104d057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561051457600080fd5b82018360208201111561052657600080fd5b8035906020019184602083028401116401000000008311171561054857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f46565b610142600480360360a081101561058557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156105c257600080fd5b8201836020820111156105d457600080fd5b803590602001918460208302840111640100000000831117156105f657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611088565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146107c0576040519150601f19603f3d011682016040523d82523d6000602084013e6107c5565b606091505b5091509150816107d157fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b381806020019051602081101561080757600080fd5b810190808051604051939291908464010000000082111561082757600080fd5b90830190602082018581111561083c57600080fd5b825186602082028301116401000000008211171561085957600080fd5b82525081516020918201928201910280838360005b8381101561088657818101518382015260200161086e565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108d35781810151838201526020016108bb565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b60606338ed173960e01b87878787878760405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f9093018316909401848103909201845252506020810180517fffffffff000000000000000000000000000000000000000000000000000000009b909b167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909b169a909a1790995250969f9e505050505050505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d79565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610e16576040519150601f19603f3d011682016040523d82523d6000602084013e610e1b565b606091505b509150915081610e2757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610e5d57600080fd5b8101908080516040519392919084640100000000821115610e7d57600080fd5b908301906020820185811115610e9257600080fd5b8251866020820283011164010000000082111715610eaf57600080fd5b82525081516020918201928201910280838360005b83811015610edc578181015183820152602001610ec4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610f29578181015183820152602001610f11565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d7956fea2646970667358221220229b824d2404a97fe03a414d1d9aadcb175513f90c2abe77360b0f0d86aca15764736f6c634300060c0033",
      "bin": "608060405234801561001057600080fd5b50611215806100206000396000f3fe6080604052600436106100745760003560e01c80639c91fcb51161004e5780639c91fcb51461033d578063b05f579e146103ff578063fa3219d5146104ad578063fde1adda1461056f5761007b565b806322b5841014610080578063375734d9146101445780635f3269ea146102065761007b565b3661007b57005b600080fd5b34801561008c57600080fd5b50610142600480360360c08110156100a357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100e757600080fd5b8201836020820111156100f957600080fd5b8035906020019184602083028401116401000000008311171561011b57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561061d565b005b34801561015057600080fd5b50610142600480360360c081101561016757600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101ab57600080fd5b8201836020820111156101bd57600080fd5b803590602001918460208302840111640100000000831117156101df57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356108f1565b34801561021257600080fd5b506102c8600480360360c081101561022957600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026d57600080fd5b82018360208201111561027f57600080fd5b803590602001918460208302840111640100000000831117156102a157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a33565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034957600080fd5b50610142600480360360c081101561036057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460208302840111640100000000831117156103d857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b39565b610142600480360360a081101561041557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561045257600080fd5b82018360208201111561046457600080fd5b8035906020019184602083028401116401000000008311171561048657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c7b565b3480156104b957600080fd5b50610142600480360360c08110156104d057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561051457600080fd5b82018360208201111561052657600080fd5b8035906020019184602083028401116401000000008311171561054857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f46565b610142600480360360a081101561058557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156105c257600080fd5b8201836020820111156105d457600080fd5b803590602001918460208302840111640100000000831117156105f657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611088565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146107c0576040519150601f19603f3d011682016040523d82523d6000602084013e6107c5565b606091505b5091509150816107d157fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b381806020019051602081101561080757600080fd5b810190808051604051939291908464010000000082111561082757600080fd5b90830190602082018581111561083c57600080fd5b825186602082028301116401000000008211171561085957600080fd5b82525081516020918201928201910280838360005b8381101561088657818101518382015260200161086e565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108d35781810151838201526020016108bb565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b60606338ed173960e01b87878787878760405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f9093018316909401848103909201845252506020810180517fffffffff000000000000000000000000000000000000000000000000000000009b909b167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909b169a909a1790995250969f9e505050505050505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d79565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610e16576040519150601f19603f3d011682016040523d82523d6000602084013e610e1b565b606091505b509150915081610e2757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610e5d57600080fd5b8101908080516040519392919084640100000000821115610e7d57600080fd5b908301906020820185811115610e9257600080fd5b8251866020820283011164010000000082111715610eaf57600080fd5b82525081516020918201928201910280838360005b83811015610edc578181015183820152602001610ec4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610f29578181015183820152602001610f11565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d7956fea2646970667358221220229b824d2404a97fe03a414d1d9aadcb175513f90c2abe77360b0f0d86aca15764736f6c634300060c0033",
      "bin-runtime": "6080604052600436106100745760003560e01c80639c91fcb51161004e5780639c91fcb51461033d578063b05f579e146103ff578063fa3219d5146104ad578063fde1adda1461056f5761007b565b806322b5841014610080578063375734d9146101445780635f3269ea146102065761007b565b3661007b57005b600080fd5b34801561008c57600080fd5b50610142600480360360c08110156100a357600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156100e757600080fd5b8201836020820111156100f957600080fd5b8035906020019184602083028401116401000000008311171561011b57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff813516906020013561061d565b005b34801561015057600080fd5b50610142600480360360c081101561016757600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156101ab57600080fd5b8201836020820111156101bd57600080fd5b803590602001918460208302840111640100000000831117156101df57600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff81351690602001356108f1565b34801561021257600080fd5b506102c8600480360360c081101561022957600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561026d57600080fd5b82018360208201111561027f57600080fd5b803590602001918460208302840111640100000000831117156102a157600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610a33565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103025781810151838201526020016102ea565b50505050905090810190601f16801561032f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034957600080fd5b50610142600480360360c081101561036057600080fd5b73ffffffffffffffffffffffffffffffffffffffff82351691602081013591604082013591908101906080810160608201356401000000008111156103a457600080fd5b8201836020820111156103b657600080fd5b803590602001918460208302840111640100000000831117156103d857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b39565b610142600480360360a081101561041557600080fd5b73ffffffffffffffffffffffffffffffffffffffff8235169160208101359181019060608101604082013564010000000081111561045257600080fd5b82018360208201111561046457600080fd5b8035906020019184602083028401116401000000008311171561048657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610c7b565b3480156104b957600080fd5b50610142600480360360c08110156104d057600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135916040820135919081019060808101606082013564010000000081111561051457600080fd5b82018360208201111561052657600080fd5b8035906020019184602083028401116401000000008311171561054857600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135610f46565b610142600480360360a081101561058557600080fd5b73ffffffffffffffffffffffffffffffffffffffff823516916020810135918101906060810160408201356401000000008111156105c257600080fd5b8201836020820111156105d457600080fd5b803590602001918460208302840111640100000000831117156105f657600080fd5b919350915073ffffffffffffffffffffffffffffffffffffffff8135169060200135611088565b600060608873ffffffffffffffffffffffffffffffffffffffff16638803dbee60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b6020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146107c0576040519150601f19603f3d011682016040523d82523d6000602084013e6107c5565b606091505b5091509150816107d157fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b381806020019051602081101561080757600080fd5b810190808051604051939291908464010000000082111561082757600080fd5b90830190602082018581111561083c57600080fd5b825186602082028301116401000000008211171561085957600080fd5b82525081516020918201928201910280838360005b8381101561088657818101518382015260200161086e565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b838110156108d35781810151838201526020016108bb565b505050509050019250505060405180910390a1505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166338ed173960e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b60606338ed173960e01b87878787878760405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f9093018316909401848103909201845252506020810180517fffffffff000000000000000000000000000000000000000000000000000000009b909b167bffffffffffffffffffffffffffffffffffffffffffffffffffffffff909b169a909a1790995250969f9e505050505050505050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff166318cbafe560e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff1663fb3bdb4160e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f8201169050808301925050509650505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083835b60208310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d79565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d8060008114610e16576040519150601f19603f3d011682016040523d82523d6000602084013e610e1b565b606091505b509150915081610e2757fe5b7f4cc17991e3610e3400e74a8306aa421daaee1e3446fa22b490604610999e10b3818060200190516020811015610e5d57600080fd5b8101908080516040519392919084640100000000821115610e7d57600080fd5b908301906020820185811115610e9257600080fd5b8251866020820283011164010000000082111715610eaf57600080fd5b82525081516020918201928201910280838360005b83811015610edc578181015183820152602001610ec4565b505050509050016040525050506040518080602001828103825283818151815260200191508051906020019060200280838360005b83811015610f29578181015183820152602001610f11565b505050509050019250505060405180910390a15050505050505050565b600060608873ffffffffffffffffffffffffffffffffffffffff16634a25d94a60e01b89898989898960405160240180878152602001868152602001806020018473ffffffffffffffffffffffffffffffffffffffff1681526020018381526020018281038252868682818152602001925060200280828437600081840152601f19601f820116905080830192505050975050505050505050604051602081830303815290604052907bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040518082805190602001908083836020831061076057805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610723565b600060608773ffffffffffffffffffffffffffffffffffffffff16637ff36ab560e01b888888888860405160240180868152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825286868281815260200192506020028082843760008382015260408051601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09081169094018281039094018252928352602080820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909d169c909c178c5292518151919b909a508a995097509550859450879350869250508310610db657805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101610d7956fea2646970667358221220229b824d2404a97fe03a414d1d9aadcb175513f90c2abe77360b0f0d86aca15764736f6c634300060c0033",
      "srcmap": "110:3598:23:-:0;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "110:3598:23:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1165:518;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1165:518:23;-1:-1:-1;1165:518:23;;;;;;;;;:::i;:::-;;639;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;639:518:23;-1:-1:-1;639:518:23;;;;;;;;;:::i;220:411::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;220:411:23;-1:-1:-1;220:411:23;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2705:512;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2705:512:23;-1:-1:-1;2705:512:23;;;;;;;;;:::i;3225:480::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3225:480:23;-1:-1:-1;3225:480:23;;;;;;;;;:::i;2185:512::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;2185:512:23;-1:-1:-1;2185:512:23;;;;;;;;;:::i;1691:486::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1691:486:23;-1:-1:-1;1691:486:23;;;;;;;;;:::i;1165:518::-;1383:12;1397:23;1424:6;:19;;1481:55;;;1538:9;1549:11;1562:4;;1568:2;1572:8;1444:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1424:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1382:210;;;;1610:7;1603:15;;;;1634:41;1653:10;1642:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1642:32:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1634:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1165:518;;;;;;;;;:::o;639:::-;857:12;871:23;898:6;:19;;955:55;;;1012:8;1022:12;1036:4;;1042:2;1046:8;918:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;898:168;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;220:411;426:23;513:55;;;570:8;580:12;594:4;;600:2;604:8;476:147;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;476:147:23;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;476:147:23;;;-1:-1:-1;;;;;;;;;;;;;;;220:411:23:o;2705:512::-;2920:12;2934:23;2961:6;:19;;3018:52;;;3072:8;3082:12;3096:4;;3102:2;3106:8;2981:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2961:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3225:480;3421:12;3435:23;3462:6;:19;;3519:52;;;3573:9;3584:4;;3590:2;3594:8;3482:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3462:152;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3420:194;;;;3632:7;3625:15;;;;3656:41;3675:10;3664:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;3664:32:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3656:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3225:480;;;;;;;;:::o;2185:512::-;2400:12;2414:23;2441:6;:19;;2498:52;;;2552:9;2563:11;2576:4;;2582:2;2586:8;2461:144;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2441:165;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1691:486;1890:12;1904:23;1931:6;:19;;1988:52;;;2042:12;2056:4;;2062:2;2066:8;1951:134;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1931:155;;;;1951:134;;1931:155;;-1:-1:-1;1931:155:23;;-1:-1:-1;1951:134:23;-1:-1:-1;1931:155:23;-1:-1:-1;1931:155:23;;-1:-1:-1;1931:155:23;;-1:-1:-1;1951:134:23;;-1:-1:-1;;1931:155:23;;;;;;;;;;;;;;;;;;;;"
    },
    "contracts/test/WETH9.sol:WETH9": {
      "abi": [
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Approval",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Deposit",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": true,
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Transfer",
          "type": "event"
        },
        {
          "anonymous": false,
          "inputs": [
            {
              "indexed": true,
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "indexed": false,
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "Withdrawal",
          "type": "event"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "allowance",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "guy",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "approve",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "",
              "type": "address"
            }
          ],
          "name": "balanceOf",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "decimals",
          "outputs": [
            {
              "internalType": "uint8",
              "name": "",
              "type": "uint8"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "deposit",
          "outputs": [],
          "stateMutability": "payable",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "name",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "symbol",
          "outputs": [
            {
              "internalType": "string",
              "name": "",
              "type": "string"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [],
          "name": "totalSupply",
          "outputs": [
            {
              "internalType": "uint256",
              "name": "",
              "type": "uint256"
            }
          ],
          "stateMutability": "view",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transfer",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "address",
              "name": "src",
              "type": "address"
            },
            {
              "internalType": "address",
              "name": "dst",
              "type": "address"
            },
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "transferFrom",
          "outputs": [
            {
              "internalType": "bool",
              "name": "",
              "type": "bool"
            }
          ],
          "stateMutability": "nonpayable",
          "type": "function"
        },
        {
          "inputs": [
            {
              "internalType": "uint256",
              "name": "wad",
              "type": "uint256"
            }
          ],
          "name": "withdraw",
          "outputs": [],
          "stateMutability": "nonpayable",
          "type": "function"
        }
      ],
      "evm": {
        "bytecode": {
          "linkReferences": {},
          "object": "60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6108b38061011c6000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220decaa82fc92b382a37e5c3c8a97ea66f9460a8c6ae6651ca3d9a2c7032b0dd5964736f6c634300060c0033",
          "opcodes": "PUSH1 0xC0 PUSH1 0x40 MSTORE PUSH1 0xD PUSH1 0x80 DUP2 SWAP1 MSTORE PUSH13 0x2BB930B83832B21022BA3432B9 PUSH1 0x99 SHL PUSH1 0xA0 SWAP1 DUP2 MSTORE PUSH2 0x2E SWAP2 PUSH1 0x0 SWAP2 SWAP1 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP1 DUP3 ADD SWAP1 SWAP2 MSTORE PUSH1 0x4 DUP1 DUP3 MSTORE PUSH4 0xAE8AA89 PUSH1 0xE3 SHL PUSH1 0x20 SWAP1 SWAP3 ADD SWAP2 DUP3 MSTORE PUSH2 0x5A SWAP2 PUSH1 0x1 SWAP2 PUSH2 0x7A JUMP JUMPDEST POP PUSH1 0x2 DUP1 SLOAD PUSH1 0xFF NOT AND PUSH1 0x12 OR SWAP1 SSTORE CALLVALUE DUP1 ISZERO PUSH2 0x74 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x10D JUMP JUMPDEST DUP3 DUP1 SLOAD PUSH1 0x1 DUP2 PUSH1 0x1 AND ISZERO PUSH2 0x100 MUL SUB AND PUSH1 0x2 SWAP1 DIV SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 PUSH1 0x1F ADD PUSH1 0x20 SWAP1 DIV DUP2 ADD SWAP3 DUP3 PUSH1 0x1F LT PUSH2 0xBB JUMPI DUP1 MLOAD PUSH1 0xFF NOT AND DUP4 DUP1 ADD OR DUP6 SSTORE PUSH2 0xE8 JUMP JUMPDEST DUP3 DUP1 ADD PUSH1 0x1 ADD DUP6 SSTORE DUP3 ISZERO PUSH2 0xE8 JUMPI SWAP2 DUP3 ADD JUMPDEST DUP3 DUP2 GT ISZERO PUSH2 0xE8 JUMPI DUP3 MLOAD DUP3 SSTORE SWAP2 PUSH1 0x20 ADD SWAP2 SWAP1 PUSH1 0x1 ADD SWAP1 PUSH2 0xCD JUMP JUMPDEST POP PUSH2 0xF4 SWAP3 SWAP2 POP PUSH2 0xF8 JUMP JUMPDEST POP SWAP1 JUMP JUMPDEST JUMPDEST DUP1 DUP3 GT ISZERO PUSH2 0xF4 JUMPI PUSH1 0x0 DUP2 SSTORE PUSH1 0x1 ADD PUSH2 0xF9 JUMP JUMPDEST PUSH2 0x8B3 DUP1 PUSH2 0x11C PUSH1 0x0 CODECOPY PUSH1 0x0 RETURN INVALID PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x316 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B3 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x21C JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x40A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x47D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x481 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x699 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x76A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x773 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x246 PUSH2 0x811 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x860 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x4EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x565 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x61B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x730 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x80A CALLER DUP5 DUP5 PUSH2 0x481 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE 0xCA 0xA8 0x2F 0xC9 0x2B CODESIZE 0x2A CALLDATACOPY 0xE5 0xC3 0xC8 0xA9 PUSH31 0xA66F9460A8C6AE6651CA3D9A2C7032B0DD5964736F6C634300060C00330000 ",
          "sourceMap": "87:40:24:-:0;65:1887;87:40;;65:1887;87:40;;;-1:-1:-1;;;87:40:24;;;;;;-1:-1:-1;;87:40:24;;:::i;:::-;-1:-1:-1;134:31:24;;;;;;;;;;;;;-1:-1:-1;;;134:31:24;;;;;;;;;;;;:::i;:::-;-1:-1:-1;172:27:24;;;-1:-1:-1;;172:27:24;197:2;172:27;;;65:1887;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;65:1887:24;;;-1:-1:-1;65:1887:24;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;"
        },
        "deployedBytecode": {
          "immutableReferences": {},
          "linkReferences": {},
          "object": "6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220decaa82fc92b382a37e5c3c8a97ea66f9460a8c6ae6651ca3d9a2c7032b0dd5964736f6c634300060c0033",
          "opcodes": "PUSH1 0x80 PUSH1 0x40 MSTORE PUSH1 0x4 CALLDATASIZE LT PUSH2 0xBC JUMPI PUSH1 0x0 CALLDATALOAD PUSH1 0xE0 SHR DUP1 PUSH4 0x313CE567 GT PUSH2 0x74 JUMPI DUP1 PUSH4 0xA9059CBB GT PUSH2 0x4E JUMPI DUP1 PUSH4 0xA9059CBB EQ PUSH2 0x2C8 JUMPI DUP1 PUSH4 0xD0E30DB0 EQ PUSH2 0x30E JUMPI DUP1 PUSH4 0xDD62ED3E EQ PUSH2 0x316 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x313CE567 EQ PUSH2 0x248 JUMPI DUP1 PUSH4 0x70A08231 EQ PUSH2 0x273 JUMPI DUP1 PUSH4 0x95D89B41 EQ PUSH2 0x2B3 JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x18160DDD GT PUSH2 0xA5 JUMPI DUP1 PUSH4 0x18160DDD EQ PUSH2 0x1A5 JUMPI DUP1 PUSH4 0x23B872DD EQ PUSH2 0x1CC JUMPI DUP1 PUSH4 0x2E1A7D4D EQ PUSH2 0x21C JUMPI PUSH2 0xBC JUMP JUMPDEST DUP1 PUSH4 0x6FDDE03 EQ PUSH2 0xC1 JUMPI DUP1 PUSH4 0x95EA7B3 EQ PUSH2 0x14B JUMPI JUMPDEST PUSH1 0x0 DUP1 REVERT JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0xCD JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x35E JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 DUP1 DUP3 MSTORE DUP4 MLOAD DUP2 DUP4 ADD MSTORE DUP4 MLOAD SWAP2 SWAP3 DUP4 SWAP3 SWAP1 DUP4 ADD SWAP2 DUP6 ADD SWAP1 DUP1 DUP4 DUP4 PUSH1 0x0 JUMPDEST DUP4 DUP2 LT ISZERO PUSH2 0x110 JUMPI DUP2 DUP2 ADD MLOAD DUP4 DUP3 ADD MSTORE PUSH1 0x20 ADD PUSH2 0xF8 JUMP JUMPDEST POP POP POP POP SWAP1 POP SWAP1 DUP2 ADD SWAP1 PUSH1 0x1F AND DUP1 ISZERO PUSH2 0x13D JUMPI DUP1 DUP3 SUB DUP1 MLOAD PUSH1 0x1 DUP4 PUSH1 0x20 SUB PUSH2 0x100 EXP SUB NOT AND DUP2 MSTORE PUSH1 0x20 ADD SWAP2 POP JUMPDEST POP SWAP3 POP POP POP PUSH1 0x40 MLOAD DUP1 SWAP2 SUB SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x157 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x16E JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x40A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 ISZERO ISZERO DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1B1 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH2 0x47D JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD SWAP2 DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x1D8 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x60 DUP2 LT ISZERO PUSH2 0x1EF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 DUP2 ADD CALLDATALOAD SWAP1 SWAP2 AND SWAP1 PUSH1 0x40 ADD CALLDATALOAD PUSH2 0x481 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x228 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x246 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x23F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH2 0x699 JUMP JUMPDEST STOP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x254 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x25D PUSH2 0x76A JUMP JUMPDEST PUSH1 0x40 DUP1 MLOAD PUSH1 0xFF SWAP1 SWAP3 AND DUP3 MSTORE MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 RETURN JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x27F JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x20 DUP2 LT ISZERO PUSH2 0x296 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP CALLDATALOAD PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF AND PUSH2 0x773 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2BF JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0xD6 PUSH2 0x785 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x2D4 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x191 PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x2EB JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD AND SWAP1 PUSH1 0x20 ADD CALLDATALOAD PUSH2 0x7FD JUMP JUMPDEST PUSH2 0x246 PUSH2 0x811 JUMP JUMPDEST CALLVALUE DUP1 ISZERO PUSH2 0x322 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH2 0x1BA PUSH1 0x4 DUP1 CALLDATASIZE SUB PUSH1 0x40 DUP2 LT ISZERO PUSH2 0x339 JUMPI PUSH1 0x0 DUP1 REVERT JUMPDEST POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP2 CALLDATALOAD DUP2 AND SWAP2 PUSH1 0x20 ADD CALLDATALOAD AND PUSH2 0x860 JUMP JUMPDEST PUSH1 0x0 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 PUSH1 0x1 DUP6 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST DUP3 ADD SWAP2 SWAP1 PUSH1 0x0 MSTORE PUSH1 0x20 PUSH1 0x0 KECCAK256 SWAP1 JUMPDEST DUP2 SLOAD DUP2 MSTORE SWAP1 PUSH1 0x1 ADD SWAP1 PUSH1 0x20 ADD DUP1 DUP4 GT PUSH2 0x3E5 JUMPI DUP3 SWAP1 SUB PUSH1 0x1F AND DUP3 ADD SWAP2 JUMPDEST POP POP POP POP POP DUP2 JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP8 AND DUP1 DUP6 MSTORE SWAP1 DUP4 MSTORE DUP2 DUP5 KECCAK256 DUP7 SWAP1 SSTORE DUP2 MLOAD DUP7 DUP2 MSTORE SWAP2 MLOAD SWAP4 SWAP5 SWAP1 SWAP4 SWAP1 SWAP3 PUSH32 0x8C5BE1E5EBEC7D5BD14F71427D1E84F3DD0314C0F7B2291E5B200AC8C7C3B925 SWAP3 DUP3 SWAP1 SUB ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP3 SWAP2 POP POP JUMP JUMPDEST SELFBALANCE SWAP1 JUMP JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP4 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP2 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x4EF JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND CALLER EQ DUP1 ISZERO SWAP1 PUSH2 0x565 JUMPI POP PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF EQ ISZERO JUMPDEST ISZERO PUSH2 0x61B JUMPI PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 SLOAD DUP3 GT ISZERO PUSH2 0x5E3 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP5 AND PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 CALLER DUP5 MSTORE SWAP1 SWAP2 MSTORE SWAP1 KECCAK256 DUP1 SLOAD DUP4 SWAP1 SUB SWAP1 SSTORE JUMPDEST PUSH20 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF DUP1 DUP6 AND PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 DUP1 DUP4 KECCAK256 DUP1 SLOAD DUP9 SWAP1 SUB SWAP1 SSTORE SWAP4 DUP8 AND DUP1 DUP4 MSTORE SWAP2 DUP5 SWAP1 KECCAK256 DUP1 SLOAD DUP8 ADD SWAP1 SSTORE DUP4 MLOAD DUP7 DUP2 MSTORE SWAP4 MLOAD SWAP2 SWAP4 PUSH32 0xDDF252AD1BE2C89B69C2B068FC378DAA952BA7F163C4A11628F55A4DF523B3EF SWAP3 SWAP1 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG3 POP PUSH1 0x1 SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 GT ISZERO PUSH2 0x6F1 JUMPI PUSH1 0x40 DUP1 MLOAD PUSH32 0x8C379A000000000000000000000000000000000000000000000000000000000 DUP2 MSTORE PUSH1 0x20 PUSH1 0x4 DUP3 ADD MSTORE PUSH1 0x0 PUSH1 0x24 DUP3 ADD MSTORE SWAP1 MLOAD SWAP1 DUP2 SWAP1 SUB PUSH1 0x64 ADD SWAP1 REVERT JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x40 DUP1 DUP3 KECCAK256 DUP1 SLOAD DUP6 SWAP1 SUB SWAP1 SSTORE MLOAD DUP4 ISZERO PUSH2 0x8FC MUL SWAP2 DUP5 SWAP2 SWAP1 DUP2 DUP2 DUP2 DUP6 DUP9 DUP9 CALL SWAP4 POP POP POP POP ISZERO DUP1 ISZERO PUSH2 0x730 JUMPI RETURNDATASIZE PUSH1 0x0 DUP1 RETURNDATACOPY RETURNDATASIZE PUSH1 0x0 REVERT JUMPDEST POP PUSH1 0x40 DUP1 MLOAD DUP3 DUP2 MSTORE SWAP1 MLOAD CALLER SWAP2 PUSH32 0x7FCF532C15F0A6DB0BD6D0E038BEA71D30D808C7D98CB3BF7268A95BF5081B65 SWAP2 SWAP1 DUP2 SWAP1 SUB PUSH1 0x20 ADD SWAP1 LOG2 POP JUMP JUMPDEST PUSH1 0x2 SLOAD PUSH1 0xFF AND DUP2 JUMP JUMPDEST PUSH1 0x3 PUSH1 0x20 MSTORE PUSH1 0x0 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP1 KECCAK256 SLOAD DUP2 JUMP JUMPDEST PUSH1 0x1 DUP1 SLOAD PUSH1 0x40 DUP1 MLOAD PUSH1 0x20 PUSH1 0x2 DUP5 DUP7 AND ISZERO PUSH2 0x100 MUL PUSH32 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF ADD SWAP1 SWAP5 AND SWAP4 SWAP1 SWAP4 DIV PUSH1 0x1F DUP2 ADD DUP5 SWAP1 DIV DUP5 MUL DUP3 ADD DUP5 ADD SWAP1 SWAP3 MSTORE DUP2 DUP2 MSTORE SWAP3 SWAP2 DUP4 ADD DUP3 DUP3 DUP1 ISZERO PUSH2 0x402 JUMPI DUP1 PUSH1 0x1F LT PUSH2 0x3D7 JUMPI PUSH2 0x100 DUP1 DUP4 SLOAD DIV MUL DUP4 MSTORE SWAP2 PUSH1 0x20 ADD SWAP2 PUSH2 0x402 JUMP JUMPDEST PUSH1 0x0 PUSH2 0x80A CALLER DUP5 DUP5 PUSH2 0x481 JUMP JUMPDEST SWAP4 SWAP3 POP POP POP JUMP JUMPDEST CALLER PUSH1 0x0 DUP2 DUP2 MSTORE PUSH1 0x3 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x40 SWAP2 DUP3 SWAP1 KECCAK256 DUP1 SLOAD CALLVALUE SWAP1 DUP2 ADD SWAP1 SWAP2 SSTORE DUP3 MLOAD SWAP1 DUP2 MSTORE SWAP2 MLOAD PUSH32 0xE1FFFCC4923D04B559F4D29A8BFC6CDA04EB5B0D3C460751C2402C5C5CC9109C SWAP3 DUP2 SWAP1 SUB SWAP1 SWAP2 ADD SWAP1 LOG2 JUMP JUMPDEST PUSH1 0x4 PUSH1 0x20 SWAP1 DUP2 MSTORE PUSH1 0x0 SWAP3 DUP4 MSTORE PUSH1 0x40 DUP1 DUP5 KECCAK256 SWAP1 SWAP2 MSTORE SWAP1 DUP3 MSTORE SWAP1 KECCAK256 SLOAD DUP2 JUMP INVALID LOG2 PUSH5 0x6970667358 0x22 SLT KECCAK256 0xDE 0xCA 0xA8 0x2F 0xC9 0x2B CODESIZE 0x2A CALLDATACOPY 0xE5 0xC3 0xC8 0xA9 PUSH31 0xA66F9460A8C6AE6651CA3D9A2C7032B0DD5964736F6C634300060C00330000 ",
          "sourceMap": "65:1887:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;87:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:181;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1144:181:24;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1039:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1464:485;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1464:485:24;;;;;;;;;;;;;;;;;;:::i;819:212::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;819:212:24;;:::i;:::-;;172:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;465:65;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;465:65:24;;;;:::i;134:31::-;;;;;;;;;;;;;:::i;1333:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1333:123:24;;;;;;;;;:::i;680:133::-;;;:::i;537:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;537:65:24;;;;;;;;;;;:::i;87:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1144:181::-;1227:10;1200:4;1217:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;1265:30;;;;;;;1200:4;;1217:26;;1227:10;;1265:30;;;;;;;;-1:-1:-1;1313:4:24;1144:181;;;;:::o;1039:97::-;1107:21;1039:97;:::o;1464:485::-;1586:14;;;1556:4;1586:14;;;:9;:14;;;;;;:21;-1:-1:-1;1586:21:24;1578:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1629:17;;;1636:10;1629:17;;;;:59;;-1:-1:-1;1650:14:24;;;;;;;:9;:14;;;;;;;;1665:10;1650:26;;;;;;;;1685:2;1650:38;;1629:59;1625:186;;;1713:14;;;;;;;:9;:14;;;;;;;;1728:10;1713:26;;;;;;;;:33;-1:-1:-1;1713:33:24;1705:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1766:14;;;;;;;:9;:14;;;;;;;;1781:10;1766:26;;;;;;;:33;;;;;;;1625:186;1823:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;1855:14;;;;;;;;;;:21;;;;;;1894:23;;;;;;;1855:14;;1894:23;;;;;;;;;;;-1:-1:-1;1937:4:24;1464:485;;;;;:::o;819:212::-;883:10;873:21;;;;:9;:21;;;;;;:28;-1:-1:-1;873:28:24;865:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;927:10;917:21;;;;:9;:21;;;;;;:28;;;;;;;956:24;;;;;;942:3;;956:24;;917:21;956:24;942:3;927:10;956:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;996:27:24;;;;;;;;1007:10;;996:27;;;;;;;;;;819:212;:::o;172:27::-;;;;;;:::o;465:65::-;;;;;;;;;;;;;:::o;134:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1333:123;1390:4;1414:34;1427:10;1439:3;1444;1414:12;:34::i;:::-;1407:41;1333:123;-1:-1:-1;;;1333:123:24:o;680:133::-;735:10;725:21;;;;:9;:21;;;;;;;;;:34;;750:9;725:34;;;;;;775:30;;;;;;;;;;;;;;;;;680:133::o;537:65::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
        }
      },
      "metadata": "{\"compiler\":{\"version\":\"0.6.12+commit.27d51765\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Deposit\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"Withdrawal\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"guy\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"decimals\",\"outputs\":[{\"internalType\":\"uint8\",\"name\":\"\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"deposit\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"name\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"symbol\",\"outputs\":[{\"internalType\":\"string\",\"name\":\"\",\"type\":\"string\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"src\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"dst\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"wad\",\"type\":\"uint256\"}],\"name\":\"withdraw\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"contracts/test/WETH9.sol\":\"WETH9\"},\"evmVersion\":\"istanbul\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":999999},\"remappings\":[]},\"sources\":{\"contracts/test/WETH9.sol\":{\"keccak256\":\"0xfa987d9574474bd1ea5954609192e36606e25031ae84ac053018a1a527f97ce8\",\"license\":\"GPL-3.0\",\"urls\":[\"bzz-raw://211772cfab1941a9001b25b67ea0017d84a1b65ddb73750d09679e81b17b5d0a\",\"dweb:/ipfs/QmSRmQoD5BDEXcMkVM2FEkR6DdeNruD8SizY1euracdKho\"]}},\"version\":1}",
      "bytecode": "60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6108b38061011c6000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220decaa82fc92b382a37e5c3c8a97ea66f9460a8c6ae6651ca3d9a2c7032b0dd5964736f6c634300060c0033",
      "bin": "60c0604052600d60808190526c2bb930b83832b21022ba3432b960991b60a090815261002e916000919061007a565b50604080518082019091526004808252630ae8aa8960e31b602090920191825261005a9160019161007a565b506002805460ff1916601217905534801561007457600080fd5b5061010d565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106100bb57805160ff19168380011785556100e8565b828001600101855582156100e8579182015b828111156100e85782518255916020019190600101906100cd565b506100f49291506100f8565b5090565b5b808211156100f457600081556001016100f9565b6108b38061011c6000396000f3fe6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220decaa82fc92b382a37e5c3c8a97ea66f9460a8c6ae6651ca3d9a2c7032b0dd5964736f6c634300060c0033",
      "bin-runtime": "6080604052600436106100bc5760003560e01c8063313ce56711610074578063a9059cbb1161004e578063a9059cbb146102c8578063d0e30db01461030e578063dd62ed3e14610316576100bc565b8063313ce5671461024857806370a082311461027357806395d89b41146102b3576100bc565b806318160ddd116100a557806318160ddd146101a557806323b872dd146101cc5780632e1a7d4d1461021c576100bc565b806306fdde03146100c1578063095ea7b31461014b575b600080fd5b3480156100cd57600080fd5b506100d661035e565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101105781810151838201526020016100f8565b50505050905090810190601f16801561013d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561015757600080fd5b506101916004803603604081101561016e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561040a565b604080519115158252519081900360200190f35b3480156101b157600080fd5b506101ba61047d565b60408051918252519081900360200190f35b3480156101d857600080fd5b50610191600480360360608110156101ef57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610481565b34801561022857600080fd5b506102466004803603602081101561023f57600080fd5b5035610699565b005b34801561025457600080fd5b5061025d61076a565b6040805160ff9092168252519081900360200190f35b34801561027f57600080fd5b506101ba6004803603602081101561029657600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610773565b3480156102bf57600080fd5b506100d6610785565b3480156102d457600080fd5b50610191600480360360408110156102eb57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356107fd565b610246610811565b34801561032257600080fd5b506101ba6004803603604081101561033957600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516610860565b6000805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b820191906000526020600020905b8154815290600101906020018083116103e557829003601f168201915b505050505081565b33600081815260046020908152604080832073ffffffffffffffffffffffffffffffffffffffff8716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a350600192915050565b4790565b73ffffffffffffffffffffffffffffffffffffffff83166000908152600360205260408120548211156104ef57604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff84163314801590610565575073ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14155b1561061b5773ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020548211156105e357604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff841660009081526004602090815260408083203384529091529020805483900390555b73ffffffffffffffffffffffffffffffffffffffff808516600081815260036020908152604080832080548890039055938716808352918490208054870190558351868152935191937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef929081900390910190a35060019392505050565b336000908152600360205260409020548111156106f157604080517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201526000602482015290519081900360640190fd5b33600081815260036020526040808220805485900390555183156108fc0291849190818181858888f19350505050158015610730573d6000803e3d6000fd5b5060408051828152905133917f7fcf532c15f0a6db0bd6d0e038bea71d30d808c7d98cb3bf7268a95bf5081b65919081900360200190a250565b60025460ff1681565b60036020526000908152604090205481565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156104025780601f106103d757610100808354040283529160200191610402565b600061080a338484610481565b9392505050565b33600081815260036020908152604091829020805434908101909155825190815291517fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c9281900390910190a2565b60046020908152600092835260408084209091529082529020548156fea2646970667358221220decaa82fc92b382a37e5c3c8a97ea66f9460a8c6ae6651ca3d9a2c7032b0dd5964736f6c634300060c0033",
      "srcmap": "87:40:24:-:0;65:1887;87:40;;65:1887;87:40;;;-1:-1:-1;;;87:40:24;;;;;;-1:-1:-1;;87:40:24;;:::i;:::-;-1:-1:-1;134:31:24;;;;;;;;;;;;;-1:-1:-1;;;134:31:24;;;;;;;;;;;;:::i;:::-;-1:-1:-1;172:27:24;;;-1:-1:-1;;172:27:24;197:2;172:27;;;65:1887;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;65:1887:24;;;-1:-1:-1;65:1887:24;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;",
      "srcmap-runtime": "65:1887:24:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;87:40;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1144:181;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1144:181:24;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;1039:97;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;1464:485;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1464:485:24;;;;;;;;;;;;;;;;;;:::i;819:212::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;819:212:24;;:::i;:::-;;172:27;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;465:65;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;465:65:24;;;;:::i;134:31::-;;;;;;;;;;;;;:::i;1333:123::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;1333:123:24;;;;;;;;;:::i;680:133::-;;;:::i;537:65::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;537:65:24;;;;;;;;;;;:::i;87:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;1144:181::-;1227:10;1200:4;1217:21;;;:9;:21;;;;;;;;;:26;;;;;;;;;;;:32;;;1265:30;;;;;;;1200:4;;1217:26;;1227:10;;1265:30;;;;;;;;-1:-1:-1;1313:4:24;1144:181;;;;:::o;1039:97::-;1107:21;1039:97;:::o;1464:485::-;1586:14;;;1556:4;1586:14;;;:9;:14;;;;;;:21;-1:-1:-1;1586:21:24;1578:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1629:17;;;1636:10;1629:17;;;;:59;;-1:-1:-1;1650:14:24;;;;;;;:9;:14;;;;;;;;1665:10;1650:26;;;;;;;;1685:2;1650:38;;1629:59;1625:186;;;1713:14;;;;;;;:9;:14;;;;;;;;1728:10;1713:26;;;;;;;;:33;-1:-1:-1;1713:33:24;1705:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1766:14;;;;;;;:9;:14;;;;;;;;1781:10;1766:26;;;;;;;:33;;;;;;;1625:186;1823:14;;;;;;;;:9;:14;;;;;;;;:21;;;;;;;1855:14;;;;;;;;;;:21;;;;;;1894:23;;;;;;;1855:14;;1894:23;;;;;;;;;;;-1:-1:-1;1937:4:24;1464:485;;;;;:::o;819:212::-;883:10;873:21;;;;:9;:21;;;;;;:28;-1:-1:-1;873:28:24;865:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;927:10;917:21;;;;:9;:21;;;;;;:28;;;;;;;956:24;;;;;;942:3;;956:24;;917:21;956:24;942:3;927:10;956:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;996:27:24;;;;;;;;1007:10;;996:27;;;;;;;;;;819:212;:::o;172:27::-;;;;;;:::o;465:65::-;;;;;;;;;;;;;:::o;134:31::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1333:123;1390:4;1414:34;1427:10;1439:3;1444;1414:12;:34::i;:::-;1407:41;1333:123;-1:-1:-1;;;1333:123:24:o;680:133::-;735:10;725:21;;;;:9;:21;;;;;;;;;:34;;750:9;725:34;;;;;;775:30;;;;;;;;;;;;;;;;;680:133::o;537:65::-;;;;;;;;;;;;;;;;;;;;;;;;:::o"
    }
  },
  "sources": {
    "contracts/FeSwapERC20.sol": {
      "id": 0,
      "AST": {
        "absolutePath": "contracts/FeSwapERC20.sol",
        "exportedSymbols": {
          "FeSwapERC20": [
            404
          ]
        },
        "id": 405,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 1,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:0"
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapERC20.sol",
            "file": "./interfaces/IFeSwapERC20.sol",
            "id": 2,
            "nodeType": "ImportDirective",
            "scope": 405,
            "sourceUnit": 4667,
            "src": "65:39:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "./libraries/SafeMath.sol",
            "id": 3,
            "nodeType": "ImportDirective",
            "scope": 405,
            "sourceUnit": 6710,
            "src": "106:34:0",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 4,
                  "name": "IFeSwapERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4666,
                  "src": "168:12:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IFeSwapERC20_$4666",
                    "typeString": "contract IFeSwapERC20"
                  }
                },
                "id": 5,
                "nodeType": "InheritanceSpecifier",
                "src": "168:12:0"
              }
            ],
            "contractDependencies": [
              4666
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 404,
            "linearizedBaseContracts": [
              404,
              4666
            ],
            "name": "FeSwapERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 8,
                "libraryName": {
                  "contractScope": null,
                  "id": 6,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6709,
                  "src": "194:8:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$6709",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "188:24:0",
                "typeName": {
                  "id": 7,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "207:4:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "baseFunctions": [
                  4571
                ],
                "constant": true,
                "functionSelector": "06fdde03",
                "id": 12,
                "mutability": "constant",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 10,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "243:8:0"
                },
                "scope": 404,
                "src": "220:47:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "220:6:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "466553776170",
                  "id": 11,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "259:8:0",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_84aaf7fda2a4dcb5e79fa4719e805d2b354fafd29c5e5e9f8f62249697c6fbcd",
                    "typeString": "literal_string \"FeSwap\""
                  },
                  "value": "FeSwap"
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4576
                ],
                "constant": true,
                "functionSelector": "95d89b41",
                "id": 16,
                "mutability": "constant",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 14,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "297:8:0"
                },
                "scope": 404,
                "src": "274:47:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 13,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "274:6:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "46455350",
                  "id": 15,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "315:6:0",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_709909fdb85b1e14a3e9308c6be63f450435e6789e38757a3ed467e62c7e1f33",
                    "typeString": "literal_string \"FESP\""
                  },
                  "value": "FESP"
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4581
                ],
                "constant": true,
                "functionSelector": "313ce567",
                "id": 20,
                "mutability": "constant",
                "name": "decimals",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 18,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "350:8:0"
                },
                "scope": 404,
                "src": "328:44:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 17,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "328:5:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3138",
                  "id": 19,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "370:2:0",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_18_by_1",
                    "typeString": "int_const 18"
                  },
                  "value": "18"
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4586
                ],
                "constant": false,
                "functionSelector": "18160ddd",
                "id": 23,
                "mutability": "mutable",
                "name": "totalSupply",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 22,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "392:8:0"
                },
                "scope": 404,
                "src": "379:33:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 21,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "379:4:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4593
                ],
                "constant": false,
                "functionSelector": "70a08231",
                "id": 28,
                "mutability": "mutable",
                "name": "balanceOf",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 27,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "451:8:0"
                },
                "scope": 404,
                "src": "419:50:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 26,
                  "keyType": {
                    "id": 24,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "427:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "419:24:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 25,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "438:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4602
                ],
                "constant": false,
                "functionSelector": "dd62ed3e",
                "id": 35,
                "mutability": "mutable",
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 34,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "528:8:0"
                },
                "scope": 404,
                "src": "476:70:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                  "typeString": "mapping(address => mapping(address => uint256))"
                },
                "typeName": {
                  "id": 33,
                  "keyType": {
                    "id": 29,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "484:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "476:44:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "valueType": {
                    "id": 32,
                    "keyType": {
                      "id": 30,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "503:7:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "495:24:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 31,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "514:4:0",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4636
                ],
                "constant": false,
                "functionSelector": "3644e515",
                "id": 38,
                "mutability": "mutable",
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 37,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "570:8:0"
                },
                "scope": 404,
                "src": "555:40:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 36,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "555:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4641
                ],
                "constant": true,
                "functionSelector": "30adf81f",
                "id": 42,
                "mutability": "constant",
                "name": "PERMIT_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 40,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "731:8:0"
                },
                "scope": 404,
                "src": "707:117:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 39,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "707:7:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
                  "id": 41,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "758:66:0",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                    "typeString": "int_const 4995...(69 digits omitted)...3241"
                  },
                  "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4648
                ],
                "constant": false,
                "functionSelector": "7ecebe00",
                "id": 47,
                "mutability": "mutable",
                "name": "nonces",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 46,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "863:8:0"
                },
                "scope": 404,
                "src": "831:47:0",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 45,
                  "keyType": {
                    "id": 43,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "839:7:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "831:24:0",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 44,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "850:4:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 55,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 54,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 49,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 55,
                      "src": "902:21:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 48,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "902:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 51,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 55,
                      "src": "925:23:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 50,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "925:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 53,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 55,
                      "src": "950:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 52,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "950:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "901:60:0"
                },
                "src": "887:75:0"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 63,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 62,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 57,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 63,
                      "src": "983:20:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 56,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "983:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 59,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 63,
                      "src": "1005:18:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 58,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1005:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 61,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 63,
                      "src": "1025:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 60,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1025:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "982:54:0"
                },
                "src": "968:69:0"
              },
              {
                "body": {
                  "id": 98,
                  "nodeType": "Block",
                  "src": "1066:439:0",
                  "statements": [
                    {
                      "assignments": [
                        67
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 67,
                          "mutability": "mutable",
                          "name": "chainId",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 98,
                          "src": "1077:12:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 66,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1077:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 68,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1077:12:0"
                    },
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "1109:46:0",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "1124:20:0",
                            "value": {
                              "arguments": [],
                              "functionName": {
                                "name": "chainid",
                                "nodeType": "YulIdentifier",
                                "src": "1135:7:0"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1135:9:0"
                            },
                            "variableNames": [
                              {
                                "name": "chainId",
                                "nodeType": "YulIdentifier",
                                "src": "1124:7:0"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 67,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1124:7:0",
                          "valueSize": 1
                        }
                      ],
                      "id": 69,
                      "nodeType": "InlineAssembly",
                      "src": "1100:55:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 96,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 70,
                          "name": "DOMAIN_SEPARATOR",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 38,
                          "src": "1165:16:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                      "id": 75,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1247:84:0",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      },
                                      "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      }
                                    ],
                                    "id": 74,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1237:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 76,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1237:95:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 80,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 12,
                                          "src": "1367:4:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 79,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1361:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 78,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1361:5:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 81,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1361:11:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 77,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1351:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 82,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1351:22:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 86,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1408:3:0",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          },
                                          "value": "1"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          }
                                        ],
                                        "id": 85,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1402:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 84,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1402:5:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 87,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1402:10:0",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 83,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1392:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 88,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1392:21:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 89,
                                  "name": "chainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 67,
                                  "src": "1432:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 92,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1466:4:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FeSwapERC20_$404",
                                        "typeString": "contract FeSwapERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FeSwapERC20_$404",
                                        "typeString": "contract FeSwapERC20"
                                      }
                                    ],
                                    "id": 91,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1458:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 90,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1458:7:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 93,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1458:13:0",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 72,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1208:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 73,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1208:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 94,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1208:278:0",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 71,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1184:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 95,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1184:313:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "1165:332:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 97,
                      "nodeType": "ExpressionStatement",
                      "src": "1165:332:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 99,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 64,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1056:2:0"
                },
                "returnParameters": {
                  "id": 65,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1066:0:0"
                },
                "scope": 404,
                "src": "1045:460:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 133,
                  "nodeType": "Block",
                  "src": "1561:153:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 111,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 106,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23,
                          "src": "1572:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 109,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 103,
                              "src": "1602:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 107,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23,
                              "src": "1586:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 108,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6658,
                            "src": "1586:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 110,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1586:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1572:36:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 112,
                      "nodeType": "ExpressionStatement",
                      "src": "1572:36:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 122,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 113,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "1619:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 115,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 114,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 101,
                            "src": "1629:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1619:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 120,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 103,
                              "src": "1653:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 116,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28,
                                "src": "1635:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 118,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 117,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 101,
                                "src": "1645:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1635:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 119,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6658,
                            "src": "1635:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1635:24:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1619:40:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 123,
                      "nodeType": "ExpressionStatement",
                      "src": "1619:40:0"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 127,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1692:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1684:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 125,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1684:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 128,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1684:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 129,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 101,
                            "src": "1696:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 130,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 103,
                            "src": "1700:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 124,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            63
                          ],
                          "referencedDeclaration": 63,
                          "src": "1675:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 131,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1675:31:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 132,
                      "nodeType": "EmitStatement",
                      "src": "1670:36:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 134,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 104,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 101,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 134,
                      "src": "1528:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 100,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1528:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 103,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 134,
                      "src": "1540:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 102,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1540:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1527:24:0"
                },
                "returnParameters": {
                  "id": 105,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1561:0:0"
                },
                "scope": 404,
                "src": "1513:201:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 168,
                  "nodeType": "Block",
                  "src": "1772:159:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 141,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "1783:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 143,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 142,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 136,
                            "src": "1793:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1783:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 148,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 138,
                              "src": "1821:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 144,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28,
                                "src": "1801:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 146,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 145,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 136,
                                "src": "1811:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1801:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 147,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6680,
                            "src": "1801:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1801:26:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1783:44:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 151,
                      "nodeType": "ExpressionStatement",
                      "src": "1783:44:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 157,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 152,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 23,
                          "src": "1838:11:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 155,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 138,
                              "src": "1868:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 153,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 23,
                              "src": "1852:11:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 154,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6680,
                            "src": "1852:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 156,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1852:22:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1838:36:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 158,
                      "nodeType": "ExpressionStatement",
                      "src": "1838:36:0"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 160,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 136,
                            "src": "1899:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1913:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1905:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 161,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1905:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 164,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1905:10:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 165,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 138,
                            "src": "1917:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 159,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            63
                          ],
                          "referencedDeclaration": 63,
                          "src": "1890:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 166,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1890:33:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 167,
                      "nodeType": "EmitStatement",
                      "src": "1885:38:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 169,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 139,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 136,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 169,
                      "src": "1737:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 135,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1737:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 138,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 169,
                      "src": "1751:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 137,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1751:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1736:26:0"
                },
                "returnParameters": {
                  "id": 140,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1772:0:0"
                },
                "scope": 404,
                "src": "1722:209:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 192,
                  "nodeType": "Block",
                  "src": "2009:99:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 178,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35,
                              "src": "2020:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 181,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 179,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 171,
                              "src": "2030:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2020:16:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 182,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 180,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 173,
                            "src": "2037:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2020:25:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 183,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 175,
                          "src": "2048:5:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2020:33:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 185,
                      "nodeType": "ExpressionStatement",
                      "src": "2020:33:0"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 187,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 171,
                            "src": "2078:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 188,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 173,
                            "src": "2085:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 189,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 175,
                            "src": "2094:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 186,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            55
                          ],
                          "referencedDeclaration": 55,
                          "src": "2069:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 190,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2069:31:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 191,
                      "nodeType": "EmitStatement",
                      "src": "2064:36:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 193,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 176,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 171,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 193,
                      "src": "1957:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 170,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1957:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 173,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 193,
                      "src": "1972:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 172,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1972:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 175,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 193,
                      "src": "1989:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 174,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1989:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1956:44:0"
                },
                "returnParameters": {
                  "id": 177,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2009:0:0"
                },
                "scope": 404,
                "src": "1939:169:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 230,
                  "nodeType": "Block",
                  "src": "2182:155:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 202,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "2193:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 204,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 203,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 195,
                            "src": "2203:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2193:15:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 209,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 199,
                              "src": "2231:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 205,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28,
                                "src": "2211:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 207,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 206,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 195,
                                "src": "2221:4:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2211:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 208,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6680,
                            "src": "2211:19:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 210,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2211:26:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2193:44:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 212,
                      "nodeType": "ExpressionStatement",
                      "src": "2193:44:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 213,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 28,
                            "src": "2248:9:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 215,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 214,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 197,
                            "src": "2258:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2248:13:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 220,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 199,
                              "src": "2282:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 216,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 28,
                                "src": "2264:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 218,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 217,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 197,
                                "src": "2274:2:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2264:13:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 219,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6658,
                            "src": "2264:17:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 221,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2264:24:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2248:40:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 223,
                      "nodeType": "ExpressionStatement",
                      "src": "2248:40:0"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 225,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 195,
                            "src": "2313:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 226,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 197,
                            "src": "2319:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 227,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 199,
                            "src": "2323:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 224,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            63
                          ],
                          "referencedDeclaration": 63,
                          "src": "2304:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 228,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2304:25:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 229,
                      "nodeType": "EmitStatement",
                      "src": "2299:30:0"
                    }
                  ]
                },
                "documentation": null,
                "id": 231,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 200,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 195,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 231,
                      "src": "2135:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 194,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2135:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 197,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 231,
                      "src": "2149:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 196,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2149:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 199,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 231,
                      "src": "2161:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 198,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2161:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2134:38:0"
                },
                "returnParameters": {
                  "id": 201,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2182:0:0"
                },
                "scope": 404,
                "src": "2116:221:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "baseFunctions": [
                  4611
                ],
                "body": {
                  "id": 250,
                  "nodeType": "Block",
                  "src": "2424:77:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 242,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2444:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 243,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2444:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 244,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 233,
                            "src": "2456:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 245,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 235,
                            "src": "2465:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 241,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 193,
                          "src": "2435:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2435:36:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 247,
                      "nodeType": "ExpressionStatement",
                      "src": "2435:36:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2489:4:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 240,
                      "id": 249,
                      "nodeType": "Return",
                      "src": "2482:11:0"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 251,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 237,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2400:8:0"
                },
                "parameters": {
                  "id": 236,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 233,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 251,
                      "src": "2362:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 232,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2362:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 235,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 251,
                      "src": "2379:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 234,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2379:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2361:29:0"
                },
                "returnParameters": {
                  "id": 240,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 239,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 251,
                      "src": "2418:4:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 238,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2418:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2417:6:0"
                },
                "scope": 404,
                "src": "2345:156:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4620
                ],
                "body": {
                  "id": 270,
                  "nodeType": "Block",
                  "src": "2584:73:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 262,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2605:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 263,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2605:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 264,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 253,
                            "src": "2617:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 265,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 255,
                            "src": "2621:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 261,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 231,
                          "src": "2595:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 266,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2595:32:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 267,
                      "nodeType": "ExpressionStatement",
                      "src": "2595:32:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 268,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2645:4:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 260,
                      "id": 269,
                      "nodeType": "Return",
                      "src": "2638:11:0"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 271,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 257,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2560:8:0"
                },
                "parameters": {
                  "id": 256,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 253,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 271,
                      "src": "2527:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 252,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2527:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 255,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 271,
                      "src": "2539:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 254,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2539:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2526:24:0"
                },
                "returnParameters": {
                  "id": 260,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 259,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 271,
                      "src": "2578:4:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 258,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2578:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2577:6:0"
                },
                "scope": 404,
                "src": "2509:148:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4631
                ],
                "body": {
                  "id": 322,
                  "nodeType": "Block",
                  "src": "2758:217:0",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 294,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 283,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 35,
                              "src": "2773:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 285,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 284,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 273,
                              "src": "2783:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2773:15:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 288,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 286,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2789:3:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2789:10:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2773:27:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "2809:2:0",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 291,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2810:1:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            ],
                            "id": 290,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2804:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 289,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "2804:4:0",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2804:8:0",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2773:39:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 313,
                      "nodeType": "IfStatement",
                      "src": "2769:140:0",
                      "trueBody": {
                        "id": 312,
                        "nodeType": "Block",
                        "src": "2814:95:0",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 295,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 35,
                                    "src": "2829:9:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 299,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 296,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 273,
                                    "src": "2839:4:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2829:15:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 300,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 297,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2845:3:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 298,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2845:10:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "2829:27:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 308,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 277,
                                    "src": "2891:5:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 301,
                                        "name": "allowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 35,
                                        "src": "2859:9:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(address => uint256))"
                                        }
                                      },
                                      "id": 303,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 302,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 273,
                                        "src": "2869:4:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2859:15:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 306,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 304,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "2875:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 305,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2875:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2859:27:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 307,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6680,
                                  "src": "2859:31:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2859:38:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2829:68:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 311,
                            "nodeType": "ExpressionStatement",
                            "src": "2829:68:0"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 315,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 273,
                            "src": "2929:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 316,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 275,
                            "src": "2935:2:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 317,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 277,
                            "src": "2939:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 314,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 231,
                          "src": "2919:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 318,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2919:26:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 319,
                      "nodeType": "ExpressionStatement",
                      "src": "2919:26:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 320,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2963:4:0",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 282,
                      "id": 321,
                      "nodeType": "Return",
                      "src": "2956:11:0"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 323,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 279,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "2734:8:0"
                },
                "parameters": {
                  "id": 278,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 273,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 323,
                      "src": "2687:12:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 272,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2687:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 275,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 323,
                      "src": "2701:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 274,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2701:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 277,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 323,
                      "src": "2713:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 276,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2713:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2686:38:0"
                },
                "returnParameters": {
                  "id": 282,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 281,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 323,
                      "src": "2752:4:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 280,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2752:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2751:6:0"
                },
                "scope": 404,
                "src": "2665:310:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4665
                ],
                "body": {
                  "id": 402,
                  "nodeType": "Block",
                  "src": "3107:553:0",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 342,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 331,
                              "src": "3126:8:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 343,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "3138:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3138:15:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3126:27:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a2045585049524544",
                            "id": 346,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3155:17:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_e26f667d964a115fef4d6d5e5deffe1b5f22a9aef6cdfa2d766cae121bf6d498",
                              "typeString": "literal_string \"FeSwap: EXPIRED\""
                            },
                            "value": "FeSwap: EXPIRED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_e26f667d964a115fef4d6d5e5deffe1b5f22a9aef6cdfa2d766cae121bf6d498",
                              "typeString": "literal_string \"FeSwap: EXPIRED\""
                            }
                          ],
                          "id": 341,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3118:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 347,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3118:55:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 348,
                      "nodeType": "ExpressionStatement",
                      "src": "3118:55:0"
                    },
                    {
                      "assignments": [
                        350
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 350,
                          "mutability": "mutable",
                          "name": "digest",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 402,
                          "src": "3184:14:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 349,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3184:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 372,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1901",
                                "id": 354,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3260:10:0",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "argumentTypes": null,
                                "id": 355,
                                "name": "DOMAIN_SEPARATOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 38,
                                "src": "3289:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 359,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 42,
                                        "src": "3345:15:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 360,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 325,
                                        "src": "3362:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 361,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 327,
                                        "src": "3369:7:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 362,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 329,
                                        "src": "3378:5:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 366,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": false,
                                        "src": "3385:15:0",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 363,
                                            "name": "nonces",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 47,
                                            "src": "3385:6:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                              "typeString": "mapping(address => uint256)"
                                            }
                                          },
                                          "id": 365,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 364,
                                            "name": "owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 325,
                                            "src": "3392:5:0",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "3385:13:0",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 367,
                                        "name": "deadline",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 331,
                                        "src": "3402:8:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 357,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "3334:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 358,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3334:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 368,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3334:77:0",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 356,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "3324:9:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 369,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3324:88:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 352,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3225:3:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3225:16:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3225:202:0",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 351,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "3201:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 371,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3201:237:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3184:254:0"
                    },
                    {
                      "assignments": [
                        374
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 374,
                          "mutability": "mutable",
                          "name": "recoveredAddress",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 402,
                          "src": "3449:24:0",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 373,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3449:7:0",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 381,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 376,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 350,
                            "src": "3486:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 377,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 333,
                            "src": "3494:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 378,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 335,
                            "src": "3497:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 379,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 337,
                            "src": "3500:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 375,
                          "name": "ecrecover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -6,
                          "src": "3476:9:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                          }
                        },
                        "id": 380,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3476:26:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3449:53:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 392,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 388,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 383,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 374,
                                "src": "3521:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 386,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3549:1:0",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 385,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3541:7:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 384,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3541:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 387,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3541:10:0",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3521:30:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 391,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 389,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 374,
                                "src": "3555:16:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 390,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 325,
                                "src": "3575:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3555:25:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3521:59:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20494e56414c49445f5349474e4154555245",
                            "id": 393,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3582:27:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_2809840b456099e560baf9c0bd4bf0d7ca37d87ad986208cac3d1a410f5a455a",
                              "typeString": "literal_string \"FeSwap: INVALID_SIGNATURE\""
                            },
                            "value": "FeSwap: INVALID_SIGNATURE"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_2809840b456099e560baf9c0bd4bf0d7ca37d87ad986208cac3d1a410f5a455a",
                              "typeString": "literal_string \"FeSwap: INVALID_SIGNATURE\""
                            }
                          ],
                          "id": 382,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3513:7:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 394,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3513:97:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 395,
                      "nodeType": "ExpressionStatement",
                      "src": "3513:97:0"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 397,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 325,
                            "src": "3630:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 398,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 327,
                            "src": "3637:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 399,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 329,
                            "src": "3646:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 396,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 193,
                          "src": "3621:8:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3621:31:0",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 401,
                      "nodeType": "ExpressionStatement",
                      "src": "3621:31:0"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 403,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 339,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3089:8:0"
                },
                "parameters": {
                  "id": 338,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 325,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 403,
                      "src": "2999:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 324,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2999:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 327,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 403,
                      "src": "3014:15:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 326,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3014:7:0",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 329,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 403,
                      "src": "3031:10:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 328,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3031:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 331,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 403,
                      "src": "3043:13:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 330,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3043:4:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 333,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 403,
                      "src": "3058:7:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 332,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3058:5:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 335,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 403,
                      "src": "3067:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 334,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3067:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 337,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 403,
                      "src": "3078:9:0",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 336,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3078:7:0",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2998:90:0"
                },
                "returnParameters": {
                  "id": 340,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3107:0:0"
                },
                "scope": 404,
                "src": "2983:677:0",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 405,
            "src": "144:3519:0"
          }
        ],
        "src": "37:3628:0"
      }
    },
    "contracts/FeSwapFactory.sol": {
      "id": 1,
      "AST": {
        "absolutePath": "contracts/FeSwapFactory.sol",
        "exportedSymbols": {
          "FeSwapFactory": [
            940
          ]
        },
        "id": 941,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 406,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:1"
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapFactory.sol",
            "file": "./interfaces/IFeSwapFactory.sol",
            "id": 407,
            "nodeType": "ImportDirective",
            "scope": 941,
            "sourceUnit": 4790,
            "src": "65:41:1",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/FeSwapPair.sol",
            "file": "./FeSwapPair.sol",
            "id": 408,
            "nodeType": "ImportDirective",
            "scope": 941,
            "sourceUnit": 2192,
            "src": "108:26:1",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 409,
                  "name": "IFeSwapFactory",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4789,
                  "src": "164:14:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IFeSwapFactory_$4789",
                    "typeString": "contract IFeSwapFactory"
                  }
                },
                "id": 410,
                "nodeType": "InheritanceSpecifier",
                "src": "164:14:1"
              }
            ],
            "contractDependencies": [
              2191,
              4789
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 940,
            "linearizedBaseContracts": [
              940,
              4789
            ],
            "name": "FeSwapFactory",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": true,
                "functionSelector": "f3767beb",
                "id": 413,
                "mutability": "constant",
                "name": "RATE_TRIGGER_FACTORY",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 940,
                "src": "186:56:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 411,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "186:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3130",
                  "id": 412,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "240:2:1",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_10_by_1",
                    "typeString": "int_const 10"
                  },
                  "value": "10"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "51a056d1",
                "id": 416,
                "mutability": "constant",
                "name": "RATE_CAP_TRIGGER_ARBITRAGE",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 940,
                "src": "282:56:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 414,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "282:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3530",
                  "id": 415,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "336:2:1",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_50_by_1",
                    "typeString": "int_const 50"
                  },
                  "value": "50"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "f71e3a54",
                "id": 419,
                "mutability": "constant",
                "name": "RATE_PROFIT_SHARE",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 940,
                "src": "378:56:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 417,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "378:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3131",
                  "id": 418,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "432:2:1",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_11_by_1",
                    "typeString": "int_const 11"
                  },
                  "value": "11"
                },
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4697
                ],
                "constant": false,
                "functionSelector": "17d8ec7f",
                "id": 422,
                "mutability": "mutable",
                "name": "factoryAdmin",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 421,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "535:8:1"
                },
                "scope": 940,
                "src": "520:36:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 420,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "520:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4685
                ],
                "constant": false,
                "functionSelector": "017e7e58",
                "id": 425,
                "mutability": "mutable",
                "name": "feeTo",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 424,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "578:8:1"
                },
                "scope": 940,
                "src": "563:29:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 423,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "563:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4702
                ],
                "constant": false,
                "functionSelector": "687d5b7f",
                "id": 428,
                "mutability": "mutable",
                "name": "routerFeSwap",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 427,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "614:8:1"
                },
                "scope": 940,
                "src": "599:36:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 426,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "599:7:1",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4707
                ],
                "constant": false,
                "functionSelector": "d5322488",
                "id": 431,
                "mutability": "mutable",
                "name": "rateTriggerFactory",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 430,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "656:8:1"
                },
                "scope": 940,
                "src": "642:41:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 429,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "642:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4712
                ],
                "constant": false,
                "functionSelector": "d886d63d",
                "id": 434,
                "mutability": "mutable",
                "name": "rateCapArbitrage",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 433,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "704:8:1"
                },
                "scope": 940,
                "src": "690:39:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 432,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "690:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4717
                ],
                "constant": false,
                "functionSelector": "16fc2115",
                "id": 437,
                "mutability": "mutable",
                "name": "rateProfitShare",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 436,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "750:8:1"
                },
                "scope": 940,
                "src": "736:38:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 435,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "736:6:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4726
                ],
                "constant": false,
                "functionSelector": "e6a43905",
                "id": 444,
                "mutability": "mutable",
                "name": "getPair",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 443,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "895:8:1"
                },
                "scope": 940,
                "src": "840:71:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                  "typeString": "mapping(address => mapping(address => address))"
                },
                "typeName": {
                  "id": 442,
                  "keyType": {
                    "id": 438,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "848:7:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "840:47:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                    "typeString": "mapping(address => mapping(address => address))"
                  },
                  "valueType": {
                    "id": 441,
                    "keyType": {
                      "id": 439,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "867:7:1",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "859:27:1",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                      "typeString": "mapping(address => address)"
                    },
                    "valueType": {
                      "id": 440,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "878:7:1",
                      "stateMutability": "nonpayable",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4733
                ],
                "constant": false,
                "functionSelector": "1e3dd18b",
                "id": 448,
                "mutability": "mutable",
                "name": "allPairs",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 447,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "935:8:1"
                },
                "scope": 940,
                "src": "918:34:1",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_address_$dyn_storage",
                  "typeString": "address[]"
                },
                "typeName": {
                  "baseType": {
                    "id": 445,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "918:7:1",
                    "stateMutability": "nonpayable",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "id": 446,
                  "length": null,
                  "nodeType": "ArrayTypeName",
                  "src": "918:9:1",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                    "typeString": "address[]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 460,
                "name": "PairCreated",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 459,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 450,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 460,
                      "src": "979:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 449,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "979:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 452,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 460,
                      "src": "1003:22:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 451,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1003:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 454,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "pairAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 460,
                      "src": "1027:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 453,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1027:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 456,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "pairABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 460,
                      "src": "1044:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 455,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1044:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 458,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "allPairsLength",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 460,
                      "src": "1061:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 457,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1061:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "978:103:1"
                },
                "src": "961:121:1"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 470,
                "name": "PairOwnerChanged",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 469,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 462,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pairAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 470,
                      "src": "1111:23:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 461,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1111:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 464,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "pairABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 470,
                      "src": "1136:23:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 463,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1136:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 466,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "oldOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 470,
                      "src": "1161:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 465,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1161:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 468,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "newOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 470,
                      "src": "1179:16:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 467,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1179:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1110:86:1"
                },
                "src": "1088:109:1"
              },
              {
                "body": {
                  "id": 491,
                  "nodeType": "Block",
                  "src": "1247:217:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 477,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 475,
                          "name": "factoryAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 422,
                          "src": "1258:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 476,
                          "name": "_factoryAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 472,
                          "src": "1280:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1258:35:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 478,
                      "nodeType": "ExpressionStatement",
                      "src": "1258:35:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 481,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 479,
                          "name": "rateTriggerFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 431,
                          "src": "1304:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 480,
                          "name": "RATE_TRIGGER_FACTORY",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 413,
                          "src": "1326:20:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "1304:42:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "id": 482,
                      "nodeType": "ExpressionStatement",
                      "src": "1304:42:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 485,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 483,
                          "name": "rateCapArbitrage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 434,
                          "src": "1357:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 484,
                          "name": "RATE_CAP_TRIGGER_ARBITRAGE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 416,
                          "src": "1379:26:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "1357:48:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "id": 486,
                      "nodeType": "ExpressionStatement",
                      "src": "1357:48:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 487,
                          "name": "rateProfitShare",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 437,
                          "src": "1416:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 488,
                          "name": "RATE_PROFIT_SHARE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 419,
                          "src": "1438:17:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "1416:39:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "id": 490,
                      "nodeType": "ExpressionStatement",
                      "src": "1416:39:1"
                    }
                  ]
                },
                "documentation": null,
                "id": 492,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 473,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 472,
                      "mutability": "mutable",
                      "name": "_factoryAdmin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 492,
                      "src": "1217:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 471,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1217:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1216:23:1"
                },
                "returnParameters": {
                  "id": 474,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1247:0:1"
                },
                "scope": 940,
                "src": "1205:259:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4738
                ],
                "body": {
                  "id": 501,
                  "nodeType": "Block",
                  "src": "1536:41:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 498,
                          "name": "allPairs",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 448,
                          "src": "1554:8:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_address_$dyn_storage",
                            "typeString": "address[] storage ref"
                          }
                        },
                        "id": 499,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "length",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1554:15:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 497,
                      "id": 500,
                      "nodeType": "Return",
                      "src": "1547:22:1"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "574f2ba3",
                "id": 502,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "allPairsLength",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 494,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1512:8:1"
                },
                "parameters": {
                  "id": 493,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1495:2:1"
                },
                "returnParameters": {
                  "id": 497,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 496,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 502,
                      "src": "1530:4:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 495,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1530:4:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1529:6:1"
                },
                "scope": 940,
                "src": "1472:105:1",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4692
                ],
                "body": {
                  "id": 514,
                  "nodeType": "Block",
                  "src": "1687:50:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "id": 510,
                            "name": "feeTo",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 425,
                            "src": "1706:5:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 511,
                            "name": "rateProfitShare",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 437,
                            "src": "1713:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint64",
                              "typeString": "uint64"
                            }
                          }
                        ],
                        "id": 512,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "1705:24:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_uint64_$",
                          "typeString": "tuple(address,uint64)"
                        }
                      },
                      "functionReturnParameters": 509,
                      "id": 513,
                      "nodeType": "Return",
                      "src": "1698:31:1"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0002eab7",
                "id": 515,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getFeeInfo",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 504,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1627:8:1"
                },
                "parameters": {
                  "id": 503,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1610:2:1"
                },
                "returnParameters": {
                  "id": 509,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 506,
                      "mutability": "mutable",
                      "name": "_feeTo",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 515,
                      "src": "1645:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 505,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1645:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 508,
                      "mutability": "mutable",
                      "name": "_rateProfitShare",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 515,
                      "src": "1661:24:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 507,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1661:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1644:42:1"
                },
                "scope": 940,
                "src": "1591:146:1",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4753
                ],
                "body": {
                  "id": 781,
                  "nodeType": "Block",
                  "src": "1905:2311:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 534,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 532,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 517,
                              "src": "1924:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 533,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 519,
                              "src": "1934:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1924:16:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a204944454e544943414c5f414444524553534553",
                            "id": 535,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1942:29:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_656123a094db1f82942048b6cd79e1391535e7e02831e34a6d71f062d780c98b",
                              "typeString": "literal_string \"FeSwap: IDENTICAL_ADDRESSES\""
                            },
                            "value": "FeSwap: IDENTICAL_ADDRESSES"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_656123a094db1f82942048b6cd79e1391535e7e02831e34a6d71f062d780c98b",
                              "typeString": "literal_string \"FeSwap: IDENTICAL_ADDRESSES\""
                            }
                          ],
                          "id": 531,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1916:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 536,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1916:56:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 537,
                      "nodeType": "ExpressionStatement",
                      "src": "1916:56:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 558,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              },
                              "id": 551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 544,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 539,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "2051:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 542,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2069:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 541,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2061:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 540,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2061:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 543,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2061:10:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "2051:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "&&",
                              "rightExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 545,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 519,
                                  "src": "2075:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 548,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2093:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 547,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "2085:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 546,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "2085:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 549,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2085:10:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "2075:20:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "src": "2051:44:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 557,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 552,
                                "name": "routerFeSwap",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 428,
                                "src": "2099:12:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 555,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "2123:1:1",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 554,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "2115:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 553,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "2115:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 556,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2115:10:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "2099:26:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2051:74:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a205a45524f5f41444452455353",
                            "id": 559,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2128:22:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fb8c897ead770fae01a5e5ccb740681c977423a795d6cc4666f429320b4fcf40",
                              "typeString": "literal_string \"FeSwap: ZERO_ADDRESS\""
                            },
                            "value": "FeSwap: ZERO_ADDRESS"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_fb8c897ead770fae01a5e5ccb740681c977423a795d6cc4666f429320b4fcf40",
                              "typeString": "literal_string \"FeSwap: ZERO_ADDRESS\""
                            }
                          ],
                          "id": 538,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2043:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 560,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2043:108:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 561,
                      "nodeType": "ExpressionStatement",
                      "src": "2043:108:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 566,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 563,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2171:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 564,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2171:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 565,
                                    "name": "factoryAdmin",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 422,
                                    "src": "2185:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "2171:26:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 567,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2170:28:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 571,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 568,
                                      "name": "msg",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -15,
                                      "src": "2203:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_message",
                                        "typeString": "msg"
                                      }
                                    },
                                    "id": 569,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sender",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "2203:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address_payable",
                                      "typeString": "address payable"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "==",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 570,
                                    "name": "routerFeSwap",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 428,
                                    "src": "2217:12:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "2203:26:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 572,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2202:28:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2170:60:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20464f5242494444454e",
                            "id": 574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2233:19:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            },
                            "value": "FeSwap: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            }
                          ],
                          "id": 562,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2162:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2162:91:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 576,
                      "nodeType": "ExpressionStatement",
                      "src": "2162:91:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 580,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 578,
                              "name": "rateTrigger",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 523,
                              "src": "2272:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 579,
                              "name": "rateCapArbitrage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 434,
                              "src": "2287:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint64",
                                "typeString": "uint64"
                              }
                            },
                            "src": "2272:31:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a2047415020544f4f204d4f5245",
                            "id": 581,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2305:22:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4978accce9ec0e9184d529919c896a0b892e426a5e191ac715b813a660102a46",
                              "typeString": "literal_string \"FeSwap: GAP TOO MORE\""
                            },
                            "value": "FeSwap: GAP TOO MORE"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4978accce9ec0e9184d529919c896a0b892e426a5e191ac715b813a660102a46",
                              "typeString": "literal_string \"FeSwap: GAP TOO MORE\""
                            }
                          ],
                          "id": 577,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2264:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 582,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2264:64:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 583,
                      "nodeType": "ExpressionStatement",
                      "src": "2264:64:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 590,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 584,
                          "name": "pairAAB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 527,
                          "src": "2341:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 585,
                              "name": "getPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 444,
                              "src": "2351:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                "typeString": "mapping(address => mapping(address => address))"
                              }
                            },
                            "id": 587,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 586,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 517,
                              "src": "2359:6:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2351:15:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                              "typeString": "mapping(address => address)"
                            }
                          },
                          "id": 589,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 588,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 519,
                            "src": "2367:6:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2351:23:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2341:33:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 591,
                      "nodeType": "ExpressionStatement",
                      "src": "2341:33:1"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "id": 597,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 592,
                          "name": "pairAAB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 527,
                          "src": "2388:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 595,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2407:1:1",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 594,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2399:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 593,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "2399:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 596,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2399:10:1",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "2388:21:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 779,
                        "nodeType": "Block",
                        "src": "3169:1040:1",
                        "statements": [
                          {
                            "assignments": [
                              673
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 673,
                                "mutability": "mutable",
                                "name": "bytecode",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 779,
                                "src": "3184:21:1",
                                "stateVariable": false,
                                "storageLocation": "memory",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes"
                                },
                                "typeName": {
                                  "id": 672,
                                  "name": "bytes",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3184:5:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_storage_ptr",
                                    "typeString": "bytes"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 678,
                            "initialValue": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 675,
                                    "name": "FeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2191,
                                    "src": "3213:10:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_FeSwapPair_$2191_$",
                                      "typeString": "type(contract FeSwapPair)"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_type$_t_contract$_FeSwapPair_$2191_$",
                                      "typeString": "type(contract FeSwapPair)"
                                    }
                                  ],
                                  "id": 674,
                                  "name": "type",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -27,
                                  "src": "3208:4:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_metatype_pure$__$returns$__$",
                                    "typeString": "function () pure"
                                  }
                                },
                                "id": 676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3208:16:1",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_meta_type_t_contract$_FeSwapPair_$2191",
                                  "typeString": "type(contract FeSwapPair)"
                                }
                              },
                              "id": 677,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "creationCode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3208:29:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3184:53:1"
                          },
                          {
                            "assignments": [
                              680
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 680,
                                "mutability": "mutable",
                                "name": "saltAAB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 779,
                                "src": "3252:15:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 679,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3252:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 688,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 684,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 517,
                                      "src": "3297:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 685,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 519,
                                      "src": "3305:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 682,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "3280:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 683,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3280:16:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 686,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3280:32:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 681,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "3270:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 687,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3270:43:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3252:61:1"
                          },
                          {
                            "assignments": [
                              690
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 690,
                                "mutability": "mutable",
                                "name": "saltABB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 779,
                                "src": "3328:15:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                "typeName": {
                                  "id": 689,
                                  "name": "bytes32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3328:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 698,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 694,
                                      "name": "tokenB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 519,
                                      "src": "3373:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 695,
                                      "name": "tokenA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 517,
                                      "src": "3381:6:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 692,
                                      "name": "abi",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -1,
                                      "src": "3356:3:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_magic_abi",
                                        "typeString": "abi"
                                      }
                                    },
                                    "id": 693,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "memberName": "encodePacked",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "3356:16:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function () pure returns (bytes memory)"
                                    }
                                  },
                                  "id": 696,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3356:32:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "id": 691,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -8,
                                "src": "3346:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 697,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3346:43:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3328:61:1"
                          },
                          {
                            "AST": {
                              "nodeType": "YulBlock",
                              "src": "3413:184:1",
                              "statements": [
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3432:66:1",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3451:1:1",
                                        "type": "",
                                        "value": "0"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "bytecode",
                                            "nodeType": "YulIdentifier",
                                            "src": "3458:8:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3468:2:1",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3454:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3454:17:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "bytecode",
                                            "nodeType": "YulIdentifier",
                                            "src": "3479:8:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3473:5:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3473:15:1"
                                      },
                                      {
                                        "name": "saltAAB",
                                        "nodeType": "YulIdentifier",
                                        "src": "3490:7:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "create2",
                                      "nodeType": "YulIdentifier",
                                      "src": "3443:7:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3443:55:1"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "pairAAB",
                                      "nodeType": "YulIdentifier",
                                      "src": "3432:7:1"
                                    }
                                  ]
                                },
                                {
                                  "nodeType": "YulAssignment",
                                  "src": "3516:66:1",
                                  "value": {
                                    "arguments": [
                                      {
                                        "kind": "number",
                                        "nodeType": "YulLiteral",
                                        "src": "3535:1:1",
                                        "type": "",
                                        "value": "0"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "bytecode",
                                            "nodeType": "YulIdentifier",
                                            "src": "3542:8:1"
                                          },
                                          {
                                            "kind": "number",
                                            "nodeType": "YulLiteral",
                                            "src": "3552:2:1",
                                            "type": "",
                                            "value": "32"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "add",
                                          "nodeType": "YulIdentifier",
                                          "src": "3538:3:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3538:17:1"
                                      },
                                      {
                                        "arguments": [
                                          {
                                            "name": "bytecode",
                                            "nodeType": "YulIdentifier",
                                            "src": "3563:8:1"
                                          }
                                        ],
                                        "functionName": {
                                          "name": "mload",
                                          "nodeType": "YulIdentifier",
                                          "src": "3557:5:1"
                                        },
                                        "nodeType": "YulFunctionCall",
                                        "src": "3557:15:1"
                                      },
                                      {
                                        "name": "saltABB",
                                        "nodeType": "YulIdentifier",
                                        "src": "3574:7:1"
                                      }
                                    ],
                                    "functionName": {
                                      "name": "create2",
                                      "nodeType": "YulIdentifier",
                                      "src": "3527:7:1"
                                    },
                                    "nodeType": "YulFunctionCall",
                                    "src": "3527:55:1"
                                  },
                                  "variableNames": [
                                    {
                                      "name": "pairABB",
                                      "nodeType": "YulIdentifier",
                                      "src": "3516:7:1"
                                    }
                                  ]
                                }
                              ]
                            },
                            "evmVersion": "istanbul",
                            "externalReferences": [
                              {
                                "declaration": 673,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3458:8:1",
                                "valueSize": 1
                              },
                              {
                                "declaration": 673,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3479:8:1",
                                "valueSize": 1
                              },
                              {
                                "declaration": 673,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3542:8:1",
                                "valueSize": 1
                              },
                              {
                                "declaration": 673,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3563:8:1",
                                "valueSize": 1
                              },
                              {
                                "declaration": 527,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3432:7:1",
                                "valueSize": 1
                              },
                              {
                                "declaration": 529,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3516:7:1",
                                "valueSize": 1
                              },
                              {
                                "declaration": 680,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3490:7:1",
                                "valueSize": 1
                              },
                              {
                                "declaration": 690,
                                "isOffset": false,
                                "isSlot": false,
                                "src": "3574:7:1",
                                "valueSize": 1
                              }
                            ],
                            "id": 699,
                            "nodeType": "InlineAssembly",
                            "src": "3404:193:1"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 700,
                                "name": "rateTrigger",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 523,
                                "src": "3616:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 701,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3631:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3616:16:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 707,
                            "nodeType": "IfStatement",
                            "src": "3613:53:1",
                            "trueBody": {
                              "expression": {
                                "argumentTypes": null,
                                "id": 705,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 703,
                                  "name": "rateTrigger",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 523,
                                  "src": "3634:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 704,
                                  "name": "rateTriggerFactory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 431,
                                  "src": "3648:18:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint64",
                                    "typeString": "uint64"
                                  }
                                },
                                "src": "3634:32:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 706,
                              "nodeType": "ExpressionStatement",
                              "src": "3634:32:1"
                            }
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 708,
                                "name": "rateTrigger",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 523,
                                "src": "3681:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 711,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 709,
                                      "name": "rateTrigger",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 523,
                                      "src": "3695:11:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "36",
                                      "id": 710,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3707:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_6_by_1",
                                        "typeString": "int_const 6"
                                      },
                                      "value": "6"
                                    },
                                    "src": "3695:13:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    },
                                    "id": 714,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 712,
                                      "name": "rateTriggerFactory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 431,
                                      "src": "3711:18:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint64",
                                        "typeString": "uint64"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "34",
                                      "id": 713,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3730:1:1",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_4_by_1",
                                        "typeString": "int_const 4"
                                      },
                                      "value": "4"
                                    },
                                    "src": "3711:20:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint64",
                                      "typeString": "uint64"
                                    }
                                  },
                                  "src": "3695:36:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3130303030",
                                  "id": 716,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3734:5:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_10000_by_1",
                                    "typeString": "int_const 10000"
                                  },
                                  "value": "10000"
                                },
                                "src": "3695:44:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3681:58:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 719,
                            "nodeType": "ExpressionStatement",
                            "src": "3681:58:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 724,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "3788:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 725,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 519,
                                  "src": "3796:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 726,
                                  "name": "pairOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 521,
                                  "src": "3804:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 727,
                                  "name": "routerFeSwap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 428,
                                  "src": "3815:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 728,
                                  "name": "rateTrigger",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 523,
                                  "src": "3829:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 721,
                                      "name": "pairAAB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 527,
                                      "src": "3768:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 720,
                                    "name": "IFeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4947,
                                    "src": "3756:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                      "typeString": "type(contract IFeSwapPair)"
                                    }
                                  },
                                  "id": 722,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3756:20:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 723,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "initialize",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4936,
                                "src": "3756:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,address,uint256) external"
                                }
                              },
                              "id": 729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3756:85:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 730,
                            "nodeType": "ExpressionStatement",
                            "src": "3756:85:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 731,
                                    "name": "getPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 444,
                                    "src": "3856:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                      "typeString": "mapping(address => mapping(address => address))"
                                    }
                                  },
                                  "id": 734,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 732,
                                    "name": "tokenA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 517,
                                    "src": "3864:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "3856:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 735,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 733,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 519,
                                  "src": "3872:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "3856:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 736,
                                "name": "pairAAB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 527,
                                "src": "3882:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3856:33:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 738,
                            "nodeType": "ExpressionStatement",
                            "src": "3856:33:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 742,
                                  "name": "pairAAB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 527,
                                  "src": "3918:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 739,
                                  "name": "allPairs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 448,
                                  "src": "3904:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 741,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "push",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3904:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address)"
                                }
                              },
                              "id": 743,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3904:22:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 744,
                            "nodeType": "ExpressionStatement",
                            "src": "3904:22:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 749,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 519,
                                  "src": "3975:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 750,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "3983:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 751,
                                  "name": "pairOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 521,
                                  "src": "3991:9:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 752,
                                  "name": "routerFeSwap",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 428,
                                  "src": "4002:12:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 753,
                                  "name": "rateTrigger",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 523,
                                  "src": "4016:11:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 746,
                                      "name": "pairABB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 529,
                                      "src": "3955:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 745,
                                    "name": "IFeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4947,
                                    "src": "3943:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                      "typeString": "type(contract IFeSwapPair)"
                                    }
                                  },
                                  "id": 747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3943:20:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "initialize",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4936,
                                "src": "3943:31:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,address,uint256) external"
                                }
                              },
                              "id": 754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3943:85:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 755,
                            "nodeType": "ExpressionStatement",
                            "src": "3943:85:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 762,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 756,
                                    "name": "getPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 444,
                                    "src": "4043:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                      "typeString": "mapping(address => mapping(address => address))"
                                    }
                                  },
                                  "id": 759,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 757,
                                    "name": "tokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 519,
                                    "src": "4051:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4043:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 760,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 758,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "4059:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "4043:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 761,
                                "name": "pairABB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 529,
                                "src": "4069:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "4043:33:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 763,
                            "nodeType": "ExpressionStatement",
                            "src": "4043:33:1"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 767,
                                  "name": "pairABB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 529,
                                  "src": "4105:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 764,
                                  "name": "allPairs",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 448,
                                  "src": "4091:8:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                    "typeString": "address[] storage ref"
                                  }
                                },
                                "id": 766,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "push",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "4091:13:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_arraypush_nonpayable$_t_address_$returns$__$",
                                  "typeString": "function (address)"
                                }
                              },
                              "id": 768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4091:22:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 769,
                            "nodeType": "ExpressionStatement",
                            "src": "4091:22:1"
                          },
                          {
                            "eventCall": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 771,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "4147:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 772,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 519,
                                  "src": "4155:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 773,
                                  "name": "pairAAB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 527,
                                  "src": "4163:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 774,
                                  "name": "pairABB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 529,
                                  "src": "4172:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 775,
                                    "name": "allPairs",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 448,
                                    "src": "4181:8:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_storage",
                                      "typeString": "address[] storage ref"
                                    }
                                  },
                                  "id": 776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4181:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 770,
                                "name": "PairCreated",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  460
                                ],
                                "referencedDeclaration": 460,
                                "src": "4135:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,address,uint256)"
                                }
                              },
                              "id": 777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4135:62:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 778,
                            "nodeType": "EmitStatement",
                            "src": "4130:67:1"
                          }
                        ]
                      },
                      "id": 780,
                      "nodeType": "IfStatement",
                      "src": "2385:1824:1",
                      "trueBody": {
                        "id": 671,
                        "nodeType": "Block",
                        "src": "2411:752:1",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 598,
                                "name": "pairABB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 529,
                                "src": "2426:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 599,
                                    "name": "getPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 444,
                                    "src": "2436:7:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                                      "typeString": "mapping(address => mapping(address => address))"
                                    }
                                  },
                                  "id": 601,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 600,
                                    "name": "tokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 519,
                                    "src": "2444:6:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2436:15:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                                    "typeString": "mapping(address => address)"
                                  }
                                },
                                "id": 603,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 602,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 517,
                                  "src": "2452:6:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "2436:23:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2426:33:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 605,
                            "nodeType": "ExpressionStatement",
                            "src": "2426:33:1"
                          },
                          {
                            "assignments": [
                              607
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 607,
                                "mutability": "mutable",
                                "name": "oldOwner",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 671,
                                "src": "2474:16:1",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 606,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2474:7:1",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 613,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 609,
                                      "name": "pairAAB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 527,
                                      "src": "2505:7:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 608,
                                    "name": "IFeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4947,
                                    "src": "2493:11:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                      "typeString": "type(contract IFeSwapPair)"
                                    }
                                  },
                                  "id": 610,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2493:20:1",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairOwner",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4845,
                                "src": "2493:30:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$__$returns$_t_address_$",
                                  "typeString": "function () view external returns (address)"
                                }
                              },
                              "id": 612,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2493:32:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2474:51:1"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 616,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 614,
                                "name": "oldOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 607,
                                "src": "2543:8:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 615,
                                "name": "pairOwner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 521,
                                "src": "2553:9:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "2543:19:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 639,
                            "nodeType": "IfStatement",
                            "src": "2540:291:1",
                            "trueBody": {
                              "id": 638,
                              "nodeType": "Block",
                              "src": "2564:267:1",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 621,
                                        "name": "pairOwner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 521,
                                        "src": "2613:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 618,
                                            "name": "pairAAB",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 527,
                                            "src": "2595:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 617,
                                          "name": "IFeSwapPair",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4947,
                                          "src": "2583:11:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                            "typeString": "type(contract IFeSwapPair)"
                                          }
                                        },
                                        "id": 619,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2583:20:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                          "typeString": "contract IFeSwapPair"
                                        }
                                      },
                                      "id": 620,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "setOwner",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4941,
                                      "src": "2583:29:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                        "typeString": "function (address) external"
                                      }
                                    },
                                    "id": 622,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2583:40:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 623,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2583:40:1"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 628,
                                        "name": "pairOwner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 521,
                                        "src": "2726:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 625,
                                            "name": "pairABB",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 529,
                                            "src": "2708:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 624,
                                          "name": "IFeSwapPair",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4947,
                                          "src": "2696:11:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                            "typeString": "type(contract IFeSwapPair)"
                                          }
                                        },
                                        "id": 626,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2696:20:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                          "typeString": "contract IFeSwapPair"
                                        }
                                      },
                                      "id": 627,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "setOwner",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4941,
                                      "src": "2696:29:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$__$",
                                        "typeString": "function (address) external"
                                      }
                                    },
                                    "id": 629,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2696:40:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 630,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2696:40:1"
                                },
                                {
                                  "eventCall": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 632,
                                        "name": "pairAAB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 527,
                                        "src": "2777:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 633,
                                        "name": "pairABB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 529,
                                        "src": "2786:7:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 634,
                                        "name": "oldOwner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 607,
                                        "src": "2795:8:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 635,
                                        "name": "pairOwner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 521,
                                        "src": "2805:9:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 631,
                                      "name": "PairOwnerChanged",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 470,
                                      "src": "2760:16:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$returns$__$",
                                        "typeString": "function (address,address,address,address)"
                                      }
                                    },
                                    "id": 636,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2760:55:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 637,
                                  "nodeType": "EmitStatement",
                                  "src": "2755:60:1"
                                }
                              ]
                            }
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 642,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 640,
                                "name": "rateTrigger",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 523,
                                "src": "2848:11:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 641,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2861:1:1",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2848:14:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 670,
                            "nodeType": "IfStatement",
                            "src": "2845:307:1",
                            "trueBody": {
                              "id": 669,
                              "nodeType": "Block",
                              "src": "2877:275:1",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 653,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 643,
                                      "name": "rateTrigger",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 523,
                                      "src": "2896:11:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 652,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 650,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 646,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 644,
                                            "name": "rateTrigger",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 523,
                                            "src": "2910:11:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "36",
                                            "id": 645,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2922:1:1",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_6_by_1",
                                              "typeString": "int_const 6"
                                            },
                                            "value": "6"
                                          },
                                          "src": "2910:13:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "+",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          },
                                          "id": 649,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 647,
                                            "name": "rateTriggerFactory",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 431,
                                            "src": "2926:18:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint64",
                                              "typeString": "uint64"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "*",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "hexValue": "34",
                                            "id": 648,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "kind": "number",
                                            "lValueRequested": false,
                                            "nodeType": "Literal",
                                            "src": "2945:1:1",
                                            "subdenomination": null,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_rational_4_by_1",
                                              "typeString": "int_const 4"
                                            },
                                            "value": "4"
                                          },
                                          "src": "2926:20:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint64",
                                            "typeString": "uint64"
                                          }
                                        },
                                        "src": "2910:36:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "3130303030",
                                        "id": 651,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2949:5:1",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10000_by_1",
                                          "typeString": "int_const 10000"
                                        },
                                        "value": "10000"
                                      },
                                      "src": "2910:44:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2896:58:1",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 654,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2896:58:1"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 659,
                                        "name": "rateTrigger",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 523,
                                        "src": "3035:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 656,
                                            "name": "pairAAB",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 527,
                                            "src": "3006:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 655,
                                          "name": "IFeSwapPair",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4947,
                                          "src": "2994:11:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                            "typeString": "type(contract IFeSwapPair)"
                                          }
                                        },
                                        "id": 657,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "2994:20:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                          "typeString": "contract IFeSwapPair"
                                        }
                                      },
                                      "id": 658,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "adjusArbitragetRate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4946,
                                      "src": "2994:40:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256) external"
                                      }
                                    },
                                    "id": 660,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2994:53:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 661,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2994:53:1"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 666,
                                        "name": "rateTrigger",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 523,
                                        "src": "3108:11:1",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 663,
                                            "name": "pairABB",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 529,
                                            "src": "3079:7:1",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "id": 662,
                                          "name": "IFeSwapPair",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 4947,
                                          "src": "3067:11:1",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                            "typeString": "type(contract IFeSwapPair)"
                                          }
                                        },
                                        "id": 664,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "typeConversion",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "3067:20:1",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                          "typeString": "contract IFeSwapPair"
                                        }
                                      },
                                      "id": 665,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "adjusArbitragetRate",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 4946,
                                      "src": "3067:40:1",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                                        "typeString": "function (uint256) external"
                                      }
                                    },
                                    "id": 667,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3067:53:1",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 668,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3067:53:1"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "883d2730",
                "id": 782,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "createUpdatePair",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 525,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1852:8:1"
                },
                "parameters": {
                  "id": 524,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 517,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 782,
                      "src": "1771:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 516,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1771:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 519,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 782,
                      "src": "1787:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 518,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1787:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 521,
                      "mutability": "mutable",
                      "name": "pairOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 782,
                      "src": "1803:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 520,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1803:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 523,
                      "mutability": "mutable",
                      "name": "rateTrigger",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 782,
                      "src": "1822:19:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 522,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1822:7:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1770:72:1"
                },
                "returnParameters": {
                  "id": 530,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 527,
                      "mutability": "mutable",
                      "name": "pairAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 782,
                      "src": "1870:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 526,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1870:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 529,
                      "mutability": "mutable",
                      "name": "pairABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 782,
                      "src": "1887:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 528,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1887:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1869:35:1"
                },
                "scope": 940,
                "src": "1745:2471:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4758
                ],
                "body": {
                  "id": 800,
                  "nodeType": "Block",
                  "src": "4276:100:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 792,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 789,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4295:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4295:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 791,
                              "name": "factoryAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 422,
                              "src": "4309:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4295:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20464f5242494444454e",
                            "id": 793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4323:19:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            },
                            "value": "FeSwap: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            }
                          ],
                          "id": 788,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4287:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4287:56:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 795,
                      "nodeType": "ExpressionStatement",
                      "src": "4287:56:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 798,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 796,
                          "name": "feeTo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 425,
                          "src": "4354:5:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 797,
                          "name": "_feeTo",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 784,
                          "src": "4362:6:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4354:14:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 799,
                      "nodeType": "ExpressionStatement",
                      "src": "4354:14:1"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "f46901ed",
                "id": 801,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeTo",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 786,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4267:8:1"
                },
                "parameters": {
                  "id": 785,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 784,
                      "mutability": "mutable",
                      "name": "_feeTo",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 801,
                      "src": "4242:14:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 783,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4242:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4241:16:1"
                },
                "returnParameters": {
                  "id": 787,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4276:0:1"
                },
                "scope": 940,
                "src": "4224:152:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4763
                ],
                "body": {
                  "id": 819,
                  "nodeType": "Block",
                  "src": "4450:114:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 811,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 808,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4469:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4469:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 810,
                              "name": "factoryAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 422,
                              "src": "4483:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4469:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20464f5242494444454e",
                            "id": 812,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4497:19:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            },
                            "value": "FeSwap: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            }
                          ],
                          "id": 807,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4461:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 813,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4461:56:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 814,
                      "nodeType": "ExpressionStatement",
                      "src": "4461:56:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 817,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 815,
                          "name": "factoryAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 422,
                          "src": "4528:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 816,
                          "name": "_factoryAdmin",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 803,
                          "src": "4543:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4528:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 818,
                      "nodeType": "ExpressionStatement",
                      "src": "4528:28:1"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "05dfd86f",
                "id": 820,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setFactoryAdmin",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 805,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4441:8:1"
                },
                "parameters": {
                  "id": 804,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 803,
                      "mutability": "mutable",
                      "name": "_factoryAdmin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 820,
                      "src": "4409:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 802,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4409:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4408:23:1"
                },
                "returnParameters": {
                  "id": 806,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4450:0:1"
                },
                "scope": 940,
                "src": "4384:180:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4768
                ],
                "body": {
                  "id": 838,
                  "nodeType": "Block",
                  "src": "4638:175:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 830,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 827,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4657:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 828,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4657:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 829,
                              "name": "factoryAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 422,
                              "src": "4671:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4657:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20464f5242494444454e",
                            "id": 831,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4685:19:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            },
                            "value": "FeSwap: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            }
                          ],
                          "id": 826,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4649:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 832,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4649:56:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 833,
                      "nodeType": "ExpressionStatement",
                      "src": "4649:56:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 836,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 834,
                          "name": "routerFeSwap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 428,
                          "src": "4716:12:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 835,
                          "name": "_routerFeSwap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 822,
                          "src": "4731:13:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "4716:28:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 837,
                      "nodeType": "ExpressionStatement",
                      "src": "4716:28:1"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fd5dd6d4",
                "id": 839,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setRouterFeSwap",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 824,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4629:8:1"
                },
                "parameters": {
                  "id": 823,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 822,
                      "mutability": "mutable",
                      "name": "_routerFeSwap",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 839,
                      "src": "4597:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 821,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4597:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4596:23:1"
                },
                "returnParameters": {
                  "id": 825,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4638:0:1"
                },
                "scope": 940,
                "src": "4572:241:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4777
                ],
                "body": {
                  "id": 869,
                  "nodeType": "Block",
                  "src": "4935:268:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 850,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "4954:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 851,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4954:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 852,
                              "name": "factoryAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 422,
                              "src": "4968:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "4954:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20464f5242494444454e",
                            "id": 854,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4982:19:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            },
                            "value": "FeSwap: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            }
                          ],
                          "id": 849,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4946:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 855,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4946:56:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 856,
                      "nodeType": "ExpressionStatement",
                      "src": "4946:56:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 859,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 857,
                          "name": "rateTriggerFactory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 431,
                          "src": "5013:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 858,
                          "name": "newTriggerRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 841,
                          "src": "5035:14:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "5013:36:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "id": 860,
                      "nodeType": "ExpressionStatement",
                      "src": "5013:36:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 863,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 861,
                          "name": "rateCapArbitrage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 434,
                          "src": "5060:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 862,
                          "name": "newRateCap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 843,
                          "src": "5082:10:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "5060:32:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "id": 864,
                      "nodeType": "ExpressionStatement",
                      "src": "5060:32:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 867,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 865,
                          "name": "rateProfitShare",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 437,
                          "src": "5103:15:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 866,
                          "name": "newProfitShareRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 845,
                          "src": "5125:18:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint64",
                            "typeString": "uint64"
                          }
                        },
                        "src": "5103:40:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "id": 868,
                      "nodeType": "ExpressionStatement",
                      "src": "5103:40:1"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d7596677",
                "id": 870,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "configFactory",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 847,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "4926:8:1"
                },
                "parameters": {
                  "id": 846,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 841,
                      "mutability": "mutable",
                      "name": "newTriggerRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 870,
                      "src": "4848:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 840,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "4848:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 843,
                      "mutability": "mutable",
                      "name": "newRateCap",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 870,
                      "src": "4871:17:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 842,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "4871:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 845,
                      "mutability": "mutable",
                      "name": "newProfitShareRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 870,
                      "src": "4890:25:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 844,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "4890:6:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4847:69:1"
                },
                "returnParameters": {
                  "id": 848,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4935:0:1"
                },
                "scope": 940,
                "src": "4825:378:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4788
                ],
                "body": {
                  "id": 938,
                  "nodeType": "Block",
                  "src": "5386:439:1",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 883,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "5405:3:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5405:10:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 885,
                              "name": "factoryAdmin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 422,
                              "src": "5419:12:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "5405:26:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20464f5242494444454e",
                            "id": 887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5433:19:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            },
                            "value": "FeSwap: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            }
                          ],
                          "id": 882,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5397:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 888,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5397:56:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 889,
                      "nodeType": "ExpressionStatement",
                      "src": "5397:56:1"
                    },
                    {
                      "assignments": [
                        891
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 891,
                          "mutability": "mutable",
                          "name": "pairAAB",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 938,
                          "src": "5464:15:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 890,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5464:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 897,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 892,
                            "name": "getPair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 444,
                            "src": "5482:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                              "typeString": "mapping(address => mapping(address => address))"
                            }
                          },
                          "id": 894,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 893,
                            "name": "_tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 872,
                            "src": "5490:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5482:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 896,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 895,
                          "name": "_tokenB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 874,
                          "src": "5499:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5482:25:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5464:43:1"
                    },
                    {
                      "assignments": [
                        899
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 899,
                          "mutability": "mutable",
                          "name": "pairABB",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 938,
                          "src": "5518:15:1",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 898,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5518:7:1",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 905,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 900,
                            "name": "getPair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 444,
                            "src": "5536:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_address_$_$",
                              "typeString": "mapping(address => mapping(address => address))"
                            }
                          },
                          "id": 902,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 901,
                            "name": "_tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 874,
                            "src": "5544:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "5536:16:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_address_$",
                            "typeString": "mapping(address => address)"
                          }
                        },
                        "id": 904,
                        "indexExpression": {
                          "argumentTypes": null,
                          "id": 903,
                          "name": "_tokenA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 872,
                          "src": "5553:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "5536:25:1",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5518:43:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 907,
                              "name": "pairAAB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 891,
                              "src": "5590:7:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 910,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5609:1:1",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 909,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "5601:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 908,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5601:7:1",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 911,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5601:10:1",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "5590:21:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a204e4f20544f4b454e2050414952",
                            "id": 913,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5613:23:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_f6de695480f097ad7b8d5dcc82ef1d4344cc15d1d40c2688bfecf5d0c851f6d2",
                              "typeString": "literal_string \"FeSwap: NO TOKEN PAIR\""
                            },
                            "value": "FeSwap: NO TOKEN PAIR"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_f6de695480f097ad7b8d5dcc82ef1d4344cc15d1d40c2688bfecf5d0c851f6d2",
                              "typeString": "literal_string \"FeSwap: NO TOKEN PAIR\""
                            }
                          ],
                          "id": 906,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5582:7:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 914,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5582:55:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 915,
                      "nodeType": "ExpressionStatement",
                      "src": "5582:55:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 920,
                            "name": "_tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 872,
                            "src": "5680:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 921,
                            "name": "_tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 874,
                            "src": "5689:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 922,
                            "name": "_pairOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 876,
                            "src": "5698:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 923,
                            "name": "_routerFeSwap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 878,
                            "src": "5710:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 924,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5725:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 917,
                                "name": "pairAAB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 891,
                                "src": "5660:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 916,
                              "name": "IFeSwapPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4947,
                              "src": "5648:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                "typeString": "type(contract IFeSwapPair)"
                              }
                            },
                            "id": 918,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5648:20:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                              "typeString": "contract IFeSwapPair"
                            }
                          },
                          "id": 919,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "initialize",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4936,
                          "src": "5648:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,address,uint256) external"
                          }
                        },
                        "id": 925,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5648:79:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 926,
                      "nodeType": "ExpressionStatement",
                      "src": "5648:79:1"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 931,
                            "name": "_tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 874,
                            "src": "5770:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 932,
                            "name": "_tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 872,
                            "src": "5779:7:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 933,
                            "name": "_pairOwner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 876,
                            "src": "5788:10:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 934,
                            "name": "_routerFeSwap",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 878,
                            "src": "5800:13:1",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5815:1:1",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 928,
                                "name": "pairABB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 899,
                                "src": "5750:7:1",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 927,
                              "name": "IFeSwapPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4947,
                              "src": "5738:11:1",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                "typeString": "type(contract IFeSwapPair)"
                              }
                            },
                            "id": 929,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5738:20:1",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                              "typeString": "contract IFeSwapPair"
                            }
                          },
                          "id": 930,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "initialize",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4936,
                          "src": "5738:31:1",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,address,uint256) external"
                          }
                        },
                        "id": 936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5738:79:1",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 937,
                      "nodeType": "ExpressionStatement",
                      "src": "5738:79:1"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "53a081d4",
                "id": 939,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "managePair",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 880,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "5377:8:1"
                },
                "parameters": {
                  "id": 879,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 872,
                      "mutability": "mutable",
                      "name": "_tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 939,
                      "src": "5291:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 871,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5291:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 874,
                      "mutability": "mutable",
                      "name": "_tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 939,
                      "src": "5308:15:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 873,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5308:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 876,
                      "mutability": "mutable",
                      "name": "_pairOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 939,
                      "src": "5325:18:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 875,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5325:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 878,
                      "mutability": "mutable",
                      "name": "_routerFeSwap",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 939,
                      "src": "5345:21:1",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 877,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5345:7:1",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5290:77:1"
                },
                "returnParameters": {
                  "id": 881,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "5386:0:1"
                },
                "scope": 940,
                "src": "5271:554:1",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 941,
            "src": "138:5691:1"
          }
        ],
        "src": "37:5794:1"
      }
    },
    "contracts/FeSwapPair.sol": {
      "id": 2,
      "AST": {
        "absolutePath": "contracts/FeSwapPair.sol",
        "exportedSymbols": {
          "FeSwapPair": [
            2191
          ]
        },
        "id": 2192,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 942,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:2"
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapPair.sol",
            "file": "./interfaces/IFeSwapPair.sol",
            "id": 943,
            "nodeType": "ImportDirective",
            "scope": 2192,
            "sourceUnit": 4948,
            "src": "65:38:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/FeSwapERC20.sol",
            "file": "./FeSwapERC20.sol",
            "id": 944,
            "nodeType": "ImportDirective",
            "scope": 2192,
            "sourceUnit": 405,
            "src": "105:27:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/Math.sol",
            "file": "./libraries/Math.sol",
            "id": 945,
            "nodeType": "ImportDirective",
            "scope": 2192,
            "sourceUnit": 6635,
            "src": "134:30:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/UQ112x112.sol",
            "file": "./libraries/UQ112x112.sol",
            "id": 946,
            "nodeType": "ImportDirective",
            "scope": 2192,
            "sourceUnit": 6914,
            "src": "166:35:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./interfaces/IERC20.sol",
            "id": 947,
            "nodeType": "ImportDirective",
            "scope": 2192,
            "sourceUnit": 4537,
            "src": "203:33:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapFactory.sol",
            "file": "./interfaces/IFeSwapFactory.sol",
            "id": 948,
            "nodeType": "ImportDirective",
            "scope": 2192,
            "sourceUnit": 4790,
            "src": "238:41:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapCallee.sol",
            "file": "./interfaces/IFeSwapCallee.sol",
            "id": 949,
            "nodeType": "ImportDirective",
            "scope": 2192,
            "sourceUnit": 4549,
            "src": "281:40:2",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 950,
                  "name": "IFeSwapPair",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4947,
                  "src": "348:11:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                    "typeString": "contract IFeSwapPair"
                  }
                },
                "id": 951,
                "nodeType": "InheritanceSpecifier",
                "src": "348:11:2"
              },
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 952,
                  "name": "FeSwapERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 404,
                  "src": "361:11:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeSwapERC20_$404",
                    "typeString": "contract FeSwapERC20"
                  }
                },
                "id": 953,
                "nodeType": "InheritanceSpecifier",
                "src": "361:11:2"
              }
            ],
            "contractDependencies": [
              404,
              4666,
              4947
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 2191,
            "linearizedBaseContracts": [
              2191,
              404,
              4947,
              4666
            ],
            "name": "FeSwapPair",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 956,
                "libraryName": {
                  "contractScope": null,
                  "id": 954,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6709,
                  "src": "386:8:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$6709",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "380:25:2",
                "typeName": {
                  "id": 955,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "400:4:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "id": 959,
                "libraryName": {
                  "contractScope": null,
                  "id": 957,
                  "name": "UQ112x112",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6913,
                  "src": "417:9:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_UQ112x112_$6913",
                    "typeString": "library UQ112x112"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "411:28:2",
                "typeName": {
                  "id": 958,
                  "name": "uint224",
                  "nodeType": "ElementaryTypeName",
                  "src": "431:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint224",
                    "typeString": "uint224"
                  }
                }
              },
              {
                "baseFunctions": [
                  4835
                ],
                "constant": true,
                "functionSelector": "ba9a7a56",
                "id": 965,
                "mutability": "constant",
                "name": "MINIMUM_LIQUIDITY",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 961,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "468:8:2"
                },
                "scope": 2191,
                "src": "447:55:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 960,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "447:4:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_rational_1000_by_1",
                    "typeString": "int_const 1000"
                  },
                  "id": 964,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "hexValue": "3130",
                    "id": 962,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "497:2:2",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_10_by_1",
                      "typeString": "int_const 10"
                    },
                    "value": "10"
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "**",
                  "rightExpression": {
                    "argumentTypes": null,
                    "hexValue": "33",
                    "id": 963,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "501:1:2",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_3_by_1",
                      "typeString": "int_const 3"
                    },
                    "value": "3"
                  },
                  "src": "497:5:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_1000_by_1",
                    "typeString": "int_const 1000"
                  }
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 976,
                "mutability": "constant",
                "name": "SELECTOR",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2191,
                "src": "509:88:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes4",
                  "typeString": "bytes4"
                },
                "typeName": {
                  "id": 966,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "509:6:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e7366657228616464726573732c75696e7432353629",
                              "id": 972,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "567:27:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                                "typeString": "literal_string \"transfer(address,uint256)\""
                              },
                              "value": "transfer(address,uint256)"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_a9059cbb2ab09eb219583f4a59a5d0623ade346d962bcd4e46b11da047c9049b",
                                "typeString": "literal_string \"transfer(address,uint256)\""
                              }
                            ],
                            "id": 971,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "561:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 970,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "561:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 973,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "561:34:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 969,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "551:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 974,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "551:45:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    ],
                    "id": 968,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "544:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_bytes4_$",
                      "typeString": "type(bytes4)"
                    },
                    "typeName": {
                      "id": 967,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "544:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      }
                    }
                  },
                  "id": 975,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "544:53:2",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "visibility": "private"
              },
              {
                "constant": true,
                "id": 987,
                "mutability": "constant",
                "name": "SELECTORFROM",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2191,
                "src": "604:104:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes4",
                  "typeString": "bytes4"
                },
                "typeName": {
                  "id": 977,
                  "name": "bytes4",
                  "nodeType": "ElementaryTypeName",
                  "src": "604:6:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "arguments": [
                    {
                      "argumentTypes": null,
                      "arguments": [
                        {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "7472616e7366657246726f6d28616464726573732c616464726573732c75696e7432353629",
                              "id": 983,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "string",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "666:39:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b",
                                "typeString": "literal_string \"transferFrom(address,address,uint256)\""
                              },
                              "value": "transferFrom(address,address,uint256)"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_stringliteral_23b872dd7302113369cda2901243429419bec145408fa8b352b3dd92b66c680b",
                                "typeString": "literal_string \"transferFrom(address,address,uint256)\""
                              }
                            ],
                            "id": 982,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "660:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                              "typeString": "type(bytes storage pointer)"
                            },
                            "typeName": {
                              "id": 981,
                              "name": "bytes",
                              "nodeType": "ElementaryTypeName",
                              "src": "660:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 984,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "660:46:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        }
                      ],
                      "expression": {
                        "argumentTypes": [
                          {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        ],
                        "id": 980,
                        "name": "keccak256",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": -8,
                        "src": "650:9:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                          "typeString": "function (bytes memory) pure returns (bytes32)"
                        }
                      },
                      "id": 985,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "kind": "functionCall",
                      "lValueRequested": false,
                      "names": [],
                      "nodeType": "FunctionCall",
                      "src": "650:57:2",
                      "tryCall": false,
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    }
                  ],
                  "expression": {
                    "argumentTypes": [
                      {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      }
                    ],
                    "id": 979,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "lValueRequested": false,
                    "nodeType": "ElementaryTypeNameExpression",
                    "src": "643:6:2",
                    "typeDescriptions": {
                      "typeIdentifier": "t_type$_t_bytes4_$",
                      "typeString": "type(bytes4)"
                    },
                    "typeName": {
                      "id": 978,
                      "name": "bytes4",
                      "nodeType": "ElementaryTypeName",
                      "src": "643:6:2",
                      "typeDescriptions": {
                        "typeIdentifier": null,
                        "typeString": null
                      }
                    }
                  },
                  "id": 986,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "typeConversion",
                  "lValueRequested": false,
                  "names": [],
                  "nodeType": "FunctionCall",
                  "src": "643:65:2",
                  "tryCall": false,
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes4",
                    "typeString": "bytes4"
                  }
                },
                "visibility": "private"
              },
              {
                "baseFunctions": [
                  4840
                ],
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 990,
                "mutability": "mutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 989,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "732:8:2"
                },
                "scope": 2191,
                "src": "717:31:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 988,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "717:7:2",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4845
                ],
                "constant": false,
                "functionSelector": "2ec2fe3d",
                "id": 993,
                "mutability": "mutable",
                "name": "pairOwner",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 992,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "770:8:2"
                },
                "scope": 2191,
                "src": "755:33:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 991,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "755:7:2",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4850
                ],
                "constant": false,
                "functionSelector": "6daf390b",
                "id": 996,
                "mutability": "mutable",
                "name": "tokenIn",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 995,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "814:8:2"
                },
                "scope": 2191,
                "src": "799:31:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 994,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "799:7:2",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4855
                ],
                "constant": false,
                "functionSelector": "d0202d3b",
                "id": 999,
                "mutability": "mutable",
                "name": "tokenOut",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 998,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "852:8:2"
                },
                "scope": 2191,
                "src": "837:32:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 997,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "837:7:2",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 1001,
                "mutability": "mutable",
                "name": "reserveIn",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2191,
                "src": "878:25:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint112",
                  "typeString": "uint112"
                },
                "typeName": {
                  "id": 1000,
                  "name": "uint112",
                  "nodeType": "ElementaryTypeName",
                  "src": "878:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 1003,
                "mutability": "mutable",
                "name": "reserveOut",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2191,
                "src": "979:26:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint112",
                  "typeString": "uint112"
                },
                "typeName": {
                  "id": 1002,
                  "name": "uint112",
                  "nodeType": "ElementaryTypeName",
                  "src": "979:7:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint112",
                    "typeString": "uint112"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "constant": false,
                "id": 1005,
                "mutability": "mutable",
                "name": "blockTimestampLast",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2191,
                "src": "1080:34:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint32",
                  "typeString": "uint32"
                },
                "typeName": {
                  "id": 1004,
                  "name": "uint32",
                  "nodeType": "ElementaryTypeName",
                  "src": "1080:6:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint32",
                    "typeString": "uint32"
                  }
                },
                "value": null,
                "visibility": "private"
              },
              {
                "baseFunctions": [
                  4871
                ],
                "constant": false,
                "functionSelector": "5909c0d5",
                "id": 1008,
                "mutability": "mutable",
                "name": "price0CumulativeLast",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1007,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1195:8:2"
                },
                "scope": 2191,
                "src": "1183:41:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1006,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1183:4:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4876
                ],
                "constant": false,
                "functionSelector": "5a3d5493",
                "id": 1011,
                "mutability": "mutable",
                "name": "price1CumulativeLast",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1010,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1243:8:2"
                },
                "scope": 2191,
                "src": "1231:41:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1009,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1231:4:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4881
                ],
                "constant": false,
                "functionSelector": "7464fc3d",
                "id": 1014,
                "mutability": "mutable",
                "name": "kLast",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1013,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1291:8:2"
                },
                "scope": 2191,
                "src": "1279:26:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1012,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1279:4:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4886
                ],
                "constant": false,
                "functionSelector": "09f5d055",
                "id": 1017,
                "mutability": "mutable",
                "name": "rateTriggerArbitrage",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 1016,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1421:8:2"
                },
                "scope": 2191,
                "src": "1409:41:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1015,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1409:4:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "id": 1020,
                "mutability": "mutable",
                "name": "unlocked",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2191,
                "src": "1459:28:2",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 1018,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1459:4:2",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "30783541",
                  "id": 1019,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "1483:4:2",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_90_by_1",
                    "typeString": "int_const 90"
                  },
                  "value": "0x5A"
                },
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1038,
                  "nodeType": "Block",
                  "src": "1510:126:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1023,
                              "name": "unlocked",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1020,
                              "src": "1529:8:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30783541",
                              "id": 1024,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1541:4:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_90_by_1",
                                "typeString": "int_const 90"
                              },
                              "value": "0x5A"
                            },
                            "src": "1529:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a204c4f434b4544",
                            "id": 1026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1547:16:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c315bf8b7c1bacbac842f0ce1b95480668aca83a31f765bcc4037ad29275711d",
                              "typeString": "literal_string \"FeSwap: LOCKED\""
                            },
                            "value": "FeSwap: LOCKED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c315bf8b7c1bacbac842f0ce1b95480668aca83a31f765bcc4037ad29275711d",
                              "typeString": "literal_string \"FeSwap: LOCKED\""
                            }
                          ],
                          "id": 1022,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1521:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1521:43:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1028,
                      "nodeType": "ExpressionStatement",
                      "src": "1521:43:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1031,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1029,
                          "name": "unlocked",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1020,
                          "src": "1575:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "30783639",
                          "id": 1030,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1586:4:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_105_by_1",
                            "typeString": "int_const 105"
                          },
                          "value": "0x69"
                        },
                        "src": "1575:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1032,
                      "nodeType": "ExpressionStatement",
                      "src": "1575:15:2"
                    },
                    {
                      "id": 1033,
                      "nodeType": "PlaceholderStatement",
                      "src": "1601:1:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1034,
                          "name": "unlocked",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1020,
                          "src": "1613:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "30783541",
                          "id": 1035,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1624:4:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_90_by_1",
                            "typeString": "int_const 90"
                          },
                          "value": "0x5A"
                        },
                        "src": "1613:15:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1037,
                      "nodeType": "ExpressionStatement",
                      "src": "1613:15:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1039,
                "name": "lock",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1021,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1507:2:2"
                },
                "src": "1494:142:2",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "baseFunctions": [
                  4866
                ],
                "body": {
                  "id": 1067,
                  "nodeType": "Block",
                  "src": "1855:184:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1053,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1051,
                          "name": "_reserveIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1043,
                          "src": "1866:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1052,
                          "name": "reserveIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1001,
                          "src": "1879:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "1866:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "id": 1054,
                      "nodeType": "ExpressionStatement",
                      "src": "1866:22:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1057,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1055,
                          "name": "_reserveOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1045,
                          "src": "1899:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1056,
                          "name": "reserveOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1003,
                          "src": "1913:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "1899:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "id": 1058,
                      "nodeType": "ExpressionStatement",
                      "src": "1899:24:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1059,
                          "name": "_blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1047,
                          "src": "1934:19:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1060,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1005,
                          "src": "1956:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "1934:40:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "id": 1062,
                      "nodeType": "ExpressionStatement",
                      "src": "1934:40:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1065,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1063,
                          "name": "_rateTriggerArbitrage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1049,
                          "src": "1985:21:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1064,
                          "name": "rateTriggerArbitrage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1017,
                          "src": "2009:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1985:44:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1066,
                      "nodeType": "ExpressionStatement",
                      "src": "1985:44:2"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "0902f1ac",
                "id": 1068,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReserves",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1041,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1679:8:2"
                },
                "parameters": {
                  "id": 1040,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1664:2:2"
                },
                "returnParameters": {
                  "id": 1050,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1043,
                      "mutability": "mutable",
                      "name": "_reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1068,
                      "src": "1698:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1042,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1698:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1045,
                      "mutability": "mutable",
                      "name": "_reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1068,
                      "src": "1718:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1044,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1718:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1047,
                      "mutability": "mutable",
                      "name": "_blockTimestampLast",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1068,
                      "src": "1799:26:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 1046,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1799:6:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1049,
                      "mutability": "mutable",
                      "name": "_rateTriggerArbitrage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1068,
                      "src": "1827:26:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1048,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1827:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1696:158:2"
                },
                "scope": 2191,
                "src": "1644:395:2",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 1110,
                  "nodeType": "Block",
                  "src": "2117:214:2",
                  "statements": [
                    {
                      "assignments": [
                        1078,
                        1080
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1078,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1110,
                          "src": "2129:12:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1077,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2129:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1080,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1110,
                          "src": "2143:17:2",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1079,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2143:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1090,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1085,
                                "name": "SELECTOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 976,
                                "src": "2198:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1086,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1072,
                                "src": "2208:2:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1087,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1074,
                                "src": "2212:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1083,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2175:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1084,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2175:22:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1088,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2175:43:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1081,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1070,
                            "src": "2164:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2164:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1089,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2164:55:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2128:91:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1106,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1092,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1078,
                              "src": "2238:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 1104,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1096,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1093,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1080,
                                        "src": "2250:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1094,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2250:11:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1095,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2265:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "2250:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1099,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1080,
                                        "src": "2281:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1101,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "2288:4:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 1100,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "2288:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 1102,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2287:6:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1097,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "2270:3:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1098,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2270:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1103,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2270:24:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "2250:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1105,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2249:46:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2238:57:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a205452414e534645525f4641494c4544",
                            "id": 1107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2297:25:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_db7923db91c621388557190bea6ebceb07222049bcaa76faa85f7d0fffc36e70",
                              "typeString": "literal_string \"FeSwap: TRANSFER_FAILED\""
                            },
                            "value": "FeSwap: TRANSFER_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_db7923db91c621388557190bea6ebceb07222049bcaa76faa85f7d0fffc36e70",
                              "typeString": "literal_string \"FeSwap: TRANSFER_FAILED\""
                            }
                          ],
                          "id": 1091,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2230:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1108,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2230:93:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1109,
                      "nodeType": "ExpressionStatement",
                      "src": "2230:93:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1111,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_safeTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1075,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1070,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1111,
                      "src": "2070:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1069,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2070:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1072,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1111,
                      "src": "2085:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1071,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2085:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1074,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1111,
                      "src": "2097:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1073,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2097:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2069:39:2"
                },
                "returnParameters": {
                  "id": 1076,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2117:0:2"
                },
                "scope": 2191,
                "src": "2047:284:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1156,
                  "nodeType": "Block",
                  "src": "2427:229:2",
                  "statements": [
                    {
                      "assignments": [
                        1123,
                        1125
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1123,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1156,
                          "src": "2439:12:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1122,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2439:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1125,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1156,
                          "src": "2453:17:2",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 1124,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2453:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1136,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1130,
                                "name": "SELECTORFROM",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 987,
                                "src": "2508:12:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1131,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1115,
                                "src": "2522:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1132,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1117,
                                "src": "2528:2:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1133,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1119,
                                "src": "2532:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1128,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2485:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 1129,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2485:22:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 1134,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2485:53:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1126,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1113,
                            "src": "2474:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 1127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2474:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 1135,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2474:65:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2438:101:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1152,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1138,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1123,
                              "src": "2558:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 1150,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1142,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1139,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1125,
                                        "src": "2570:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 1140,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2570:11:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1141,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2585:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "2570:16:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1145,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1125,
                                        "src": "2601:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1147,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "2608:4:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 1146,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "2608:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 1148,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "2607:6:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1143,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "2590:3:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 1144,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2590:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 1149,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2590:24:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "2570:44:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 1151,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "2569:46:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2558:57:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a205452414e534645525f46524f4d5f4641494c4544",
                            "id": 1153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2617:30:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d59a9cddac14d6b0ee0f02b93ed66b7b47ccddca9f7644f4bfe9b02d98bffd8f",
                              "typeString": "literal_string \"FeSwap: TRANSFER_FROM_FAILED\""
                            },
                            "value": "FeSwap: TRANSFER_FROM_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d59a9cddac14d6b0ee0f02b93ed66b7b47ccddca9f7644f4bfe9b02d98bffd8f",
                              "typeString": "literal_string \"FeSwap: TRANSFER_FROM_FAILED\""
                            }
                          ],
                          "id": 1137,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2550:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2550:98:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1155,
                      "nodeType": "ExpressionStatement",
                      "src": "2550:98:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1157,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_safeTransferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1120,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1113,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1157,
                      "src": "2366:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1112,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2366:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1115,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1157,
                      "src": "2381:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1114,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2381:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1117,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1157,
                      "src": "2395:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1116,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2395:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1119,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1157,
                      "src": "2407:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1118,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2407:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2365:53:2"
                },
                "returnParameters": {
                  "id": 1121,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2427:0:2"
                },
                "scope": 2191,
                "src": "2339:317:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1165,
                "name": "Mint",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1164,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1159,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1165,
                      "src": "2675:22:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1158,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2675:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1161,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1165,
                      "src": "2699:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1160,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2699:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1163,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1165,
                      "src": "2714:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1162,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2714:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2674:55:2"
                },
                "src": "2664:66:2"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1175,
                "name": "Burn",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1174,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1167,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1175,
                      "src": "2747:22:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1166,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2747:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1169,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1175,
                      "src": "2771:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1168,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2771:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1171,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1175,
                      "src": "2786:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1170,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2786:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1173,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1175,
                      "src": "2802:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1172,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2802:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2746:75:2"
                },
                "src": "2736:86:2"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1187,
                "name": "Swap",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1186,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1177,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1187,
                      "src": "2849:22:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1176,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2849:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1179,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1187,
                      "src": "2882:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1178,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2882:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1181,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1187,
                      "src": "2907:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1180,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2907:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1183,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1187,
                      "src": "2932:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1182,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2932:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1185,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1187,
                      "src": "2958:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1184,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2958:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2838:145:2"
                },
                "src": "2828:156:2"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 1193,
                "name": "Sync",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 1192,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1189,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1193,
                      "src": "3001:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1188,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "3001:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1191,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1193,
                      "src": "3020:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1190,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "3020:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3000:39:2"
                },
                "src": "2990:50:2"
              },
              {
                "body": {
                  "id": 1201,
                  "nodeType": "Block",
                  "src": "3069:39:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1199,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1196,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 990,
                          "src": "3080:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 1197,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "3090:3:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 1198,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3090:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "3080:20:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1200,
                      "nodeType": "ExpressionStatement",
                      "src": "3080:20:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1202,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1194,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3059:2:2"
                },
                "returnParameters": {
                  "id": 1195,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3069:0:2"
                },
                "scope": 2191,
                "src": "3048:60:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4936
                ],
                "body": {
                  "id": 1256,
                  "nodeType": "Block",
                  "src": "3302:359:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1220,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1217,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3321:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1218,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3321:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1219,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 990,
                              "src": "3335:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3321:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20464f5242494444454e",
                            "id": 1221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3344:19:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            },
                            "value": "FeSwap: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            }
                          ],
                          "id": 1216,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3313:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3313:51:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1223,
                      "nodeType": "ExpressionStatement",
                      "src": "3313:51:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1226,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1224,
                          "name": "tokenIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 996,
                          "src": "3375:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1225,
                          "name": "_tokenIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1204,
                          "src": "3389:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3375:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1227,
                      "nodeType": "ExpressionStatement",
                      "src": "3375:22:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1228,
                          "name": "tokenOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 999,
                          "src": "3408:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1229,
                          "name": "_tokenOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1206,
                          "src": "3422:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3408:23:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1231,
                      "nodeType": "ExpressionStatement",
                      "src": "3408:23:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1234,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1232,
                          "name": "pairOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 993,
                          "src": "3442:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1233,
                          "name": "_pairOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1208,
                          "src": "3456:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3442:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1235,
                      "nodeType": "ExpressionStatement",
                      "src": "3442:24:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1238,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1236,
                          "name": "rateTrigger",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1212,
                          "src": "3480:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1237,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "3495:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "3480:16:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1243,
                      "nodeType": "IfStatement",
                      "src": "3477:56:2",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1241,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1239,
                            "name": "rateTriggerArbitrage",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1017,
                            "src": "3499:20:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "id": 1240,
                            "name": "rateTrigger",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1212,
                            "src": "3522:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "3499:34:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1242,
                        "nodeType": "ExpressionStatement",
                        "src": "3499:34:2"
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1248,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1210,
                            "src": "3568:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1252,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "3581:2:2",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 1251,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3582:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 1250,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3576:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 1249,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "3576:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3576:8:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1245,
                                "name": "tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 996,
                                "src": "3551:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1244,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4536,
                              "src": "3544:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 1246,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3544:15:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4536",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 1247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "approve",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4515,
                          "src": "3544:23:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,uint256) external returns (bool)"
                          }
                        },
                        "id": 1254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3544:41:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1255,
                      "nodeType": "ExpressionStatement",
                      "src": "3544:41:2"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "f7013ef6",
                "id": 1257,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "initialize",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1214,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3293:8:2"
                },
                "parameters": {
                  "id": 1213,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1204,
                      "mutability": "mutable",
                      "name": "_tokenIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1257,
                      "src": "3193:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1203,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3193:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1206,
                      "mutability": "mutable",
                      "name": "_tokenOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1257,
                      "src": "3211:17:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1205,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3211:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1208,
                      "mutability": "mutable",
                      "name": "_pairOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1257,
                      "src": "3230:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1207,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3230:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1210,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1257,
                      "src": "3250:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1209,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3250:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1212,
                      "mutability": "mutable",
                      "name": "rateTrigger",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1257,
                      "src": "3266:16:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1211,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3266:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3192:91:2"
                },
                "returnParameters": {
                  "id": 1215,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3302:0:2"
                },
                "scope": 2191,
                "src": "3173:488:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4941
                ],
                "body": {
                  "id": 1275,
                  "nodeType": "Block",
                  "src": "3725:103:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1267,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1264,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3744:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3744:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1266,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 990,
                              "src": "3758:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3744:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20464f5242494444454e",
                            "id": 1268,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3767:19:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            },
                            "value": "FeSwap: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            }
                          ],
                          "id": 1263,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3736:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1269,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3736:51:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1270,
                      "nodeType": "ExpressionStatement",
                      "src": "3736:51:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1273,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1271,
                          "name": "pairOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 993,
                          "src": "3798:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1272,
                          "name": "_pairOwner",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1259,
                          "src": "3810:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "3798:22:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 1274,
                      "nodeType": "ExpressionStatement",
                      "src": "3798:22:2"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "13af4035",
                "id": 1276,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "setOwner",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1261,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3716:8:2"
                },
                "parameters": {
                  "id": 1260,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1259,
                      "mutability": "mutable",
                      "name": "_pairOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1276,
                      "src": "3687:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1258,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3687:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3686:20:2"
                },
                "returnParameters": {
                  "id": 1262,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3725:0:2"
                },
                "scope": 2191,
                "src": "3669:159:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4946
                ],
                "body": {
                  "id": 1294,
                  "nodeType": "Block",
                  "src": "3897:111:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 1286,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1283,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "3916:3:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 1284,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3916:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1285,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 990,
                              "src": "3930:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "3916:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20464f5242494444454e",
                            "id": 1287,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3939:19:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            },
                            "value": "FeSwap: FORBIDDEN"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_4020c51857fdeb30ea86fe00e8b5b115eaed238692d5297f66774c758fe86f7d",
                              "typeString": "literal_string \"FeSwap: FORBIDDEN\""
                            }
                          ],
                          "id": 1282,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3908:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3908:51:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1289,
                      "nodeType": "ExpressionStatement",
                      "src": "3908:51:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1292,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1290,
                          "name": "rateTriggerArbitrage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1017,
                          "src": "3970:20:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1291,
                          "name": "newRate",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1278,
                          "src": "3993:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3970:30:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1293,
                      "nodeType": "ExpressionStatement",
                      "src": "3970:30:2"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a1f497d6",
                "id": 1295,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "adjusArbitragetRate",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1280,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3888:8:2"
                },
                "parameters": {
                  "id": 1279,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1278,
                      "mutability": "mutable",
                      "name": "newRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1295,
                      "src": "3865:12:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1277,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3865:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3864:14:2"
                },
                "returnParameters": {
                  "id": 1281,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3897:0:2"
                },
                "scope": 2191,
                "src": "3836:172:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 1409,
                  "nodeType": "Block",
                  "src": "4194:785:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1313,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1307,
                                "name": "balanceIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1297,
                                "src": "4213:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1311,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "4234:2:2",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 1310,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4235:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 1309,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4226:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint112_$",
                                    "typeString": "type(uint112)"
                                  },
                                  "typeName": {
                                    "id": 1308,
                                    "name": "uint112",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4226:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1312,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4226:11:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "src": "4213:24:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1320,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1314,
                                "name": "balanceOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1299,
                                "src": "4241:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1318,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "UnaryOperation",
                                    "operator": "-",
                                    "prefix": true,
                                    "src": "4263:2:2",
                                    "subExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 1317,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4264:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_minus_1_by_1",
                                      "typeString": "int_const -1"
                                    }
                                  ],
                                  "id": 1316,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "4255:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint112_$",
                                    "typeString": "type(uint112)"
                                  },
                                  "typeName": {
                                    "id": 1315,
                                    "name": "uint112",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "4255:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1319,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4255:11:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              },
                              "src": "4241:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "4213:53:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a204f564552464c4f57",
                            "id": 1322,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4268:18:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b4cfe571ee7b22a8ecde5d6156625c586b202a32e1faae4e2d92287b52ac6153",
                              "typeString": "literal_string \"FeSwap: OVERFLOW\""
                            },
                            "value": "FeSwap: OVERFLOW"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b4cfe571ee7b22a8ecde5d6156625c586b202a32e1faae4e2d92287b52ac6153",
                              "typeString": "literal_string \"FeSwap: OVERFLOW\""
                            }
                          ],
                          "id": 1306,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4205:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1323,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4205:82:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1324,
                      "nodeType": "ExpressionStatement",
                      "src": "4205:82:2"
                    },
                    {
                      "assignments": [
                        1326
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1326,
                          "mutability": "mutable",
                          "name": "blockTimestamp",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1409,
                          "src": "4298:21:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 1325,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4298:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1336,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1334,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1329,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "4329:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 1330,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4329:15:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              },
                              "id": 1333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 1331,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4347:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 1332,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4350:2:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "4347:5:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              }
                            },
                            "src": "4329:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1328,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "4322:6:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint32_$",
                            "typeString": "type(uint32)"
                          },
                          "typeName": {
                            "id": 1327,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4322:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 1335,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4322:31:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4298:55:2"
                    },
                    {
                      "assignments": [
                        1338
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1338,
                          "mutability": "mutable",
                          "name": "timeElapsed",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1409,
                          "src": "4364:18:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 1337,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "4364:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1342,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 1341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1339,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1326,
                          "src": "4385:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "-",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 1340,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1005,
                          "src": "4402:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "4385:35:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "4364:56:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 1353,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            },
                            "id": 1345,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1343,
                              "name": "timeElapsed",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1338,
                              "src": "4458:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1344,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4472:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "4458:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "&&",
                          "rightExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "id": 1348,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1346,
                              "name": "_reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1301,
                              "src": "4477:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1347,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4491:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "4477:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "4458:34:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "id": 1352,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1350,
                            "name": "_reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1303,
                            "src": "4496:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1351,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4511:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "4496:16:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4458:54:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1385,
                      "nodeType": "IfStatement",
                      "src": "4454:345:2",
                      "trueBody": {
                        "id": 1384,
                        "nodeType": "Block",
                        "src": "4514:285:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1367,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1354,
                                "name": "price0CumulativeLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1008,
                                "src": "4590:20:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1366,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1362,
                                          "name": "_reserveIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1301,
                                          "src": "4655:10:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1359,
                                              "name": "_reserveOut",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1303,
                                              "src": "4636:11:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1357,
                                              "name": "UQ112x112",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6913,
                                              "src": "4619:9:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_UQ112x112_$6913_$",
                                                "typeString": "type(library UQ112x112)"
                                              }
                                            },
                                            "id": 1358,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6893,
                                            "src": "4619:16:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint112_$returns$_t_uint224_$",
                                              "typeString": "function (uint112) pure returns (uint224)"
                                            }
                                          },
                                          "id": 1360,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4619:29:2",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        },
                                        "id": 1361,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "uqdiv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6912,
                                        "src": "4619:35:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$bound_to$_t_uint224_$",
                                          "typeString": "function (uint224,uint112) pure returns (uint224)"
                                        }
                                      },
                                      "id": 1363,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4619:47:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    ],
                                    "id": 1356,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4614:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 1355,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4614:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1364,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4614:53:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1365,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1338,
                                  "src": "4670:11:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "4614:67:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4590:91:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1368,
                            "nodeType": "ExpressionStatement",
                            "src": "4590:91:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1382,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1369,
                                "name": "price1CumulativeLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1011,
                                "src": "4696:20:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 1381,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1377,
                                          "name": "_reserveOut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1303,
                                          "src": "4760:11:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1374,
                                              "name": "_reserveIn",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1301,
                                              "src": "4742:10:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint112",
                                                "typeString": "uint112"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 1372,
                                              "name": "UQ112x112",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6913,
                                              "src": "4725:9:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_UQ112x112_$6913_$",
                                                "typeString": "type(library UQ112x112)"
                                              }
                                            },
                                            "id": 1373,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "encode",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6893,
                                            "src": "4725:16:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint112_$returns$_t_uint224_$",
                                              "typeString": "function (uint112) pure returns (uint224)"
                                            }
                                          },
                                          "id": 1375,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "4725:28:2",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        },
                                        "id": 1376,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "uqdiv",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6912,
                                        "src": "4725:34:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint224_$_t_uint112_$returns$_t_uint224_$bound_to$_t_uint224_$",
                                          "typeString": "function (uint224,uint112) pure returns (uint224)"
                                        }
                                      },
                                      "id": 1378,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "4725:47:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    ],
                                    "id": 1371,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "4720:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 1370,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "4720:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1379,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4720:53:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 1380,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1338,
                                  "src": "4776:11:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "4720:67:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4696:91:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1383,
                            "nodeType": "ExpressionStatement",
                            "src": "4696:91:2"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1386,
                          "name": "reserveIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1001,
                          "src": "4809:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1389,
                              "name": "balanceIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1297,
                              "src": "4829:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4821:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint112_$",
                              "typeString": "type(uint112)"
                            },
                            "typeName": {
                              "id": 1387,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "4821:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4821:18:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "4809:30:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "id": 1392,
                      "nodeType": "ExpressionStatement",
                      "src": "4809:30:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1398,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1393,
                          "name": "reserveOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1003,
                          "src": "4850:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1396,
                              "name": "balanceOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1299,
                              "src": "4871:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 1395,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4863:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint112_$",
                              "typeString": "type(uint112)"
                            },
                            "typeName": {
                              "id": 1394,
                              "name": "uint112",
                              "nodeType": "ElementaryTypeName",
                              "src": "4863:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1397,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4863:19:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          }
                        },
                        "src": "4850:32:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "id": 1399,
                      "nodeType": "ExpressionStatement",
                      "src": "4850:32:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1402,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1400,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1005,
                          "src": "4893:18:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 1401,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1326,
                          "src": "4914:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "4893:35:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "id": 1403,
                      "nodeType": "ExpressionStatement",
                      "src": "4893:35:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1405,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1001,
                            "src": "4949:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1406,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1003,
                            "src": "4960:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 1404,
                          "name": "Sync",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1193
                          ],
                          "referencedDeclaration": 1193,
                          "src": "4944:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint112,uint112)"
                          }
                        },
                        "id": 1407,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4944:27:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1408,
                      "nodeType": "EmitStatement",
                      "src": "4939:32:2"
                    }
                  ]
                },
                "documentation": null,
                "id": 1410,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_update",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1304,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1297,
                      "mutability": "mutable",
                      "name": "balanceIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1410,
                      "src": "4112:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1296,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4112:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1299,
                      "mutability": "mutable",
                      "name": "balanceOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1410,
                      "src": "4128:15:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1298,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4128:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1301,
                      "mutability": "mutable",
                      "name": "_reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1410,
                      "src": "4145:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1300,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "4145:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1303,
                      "mutability": "mutable",
                      "name": "_reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1410,
                      "src": "4165:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1302,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "4165:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4111:74:2"
                },
                "returnParameters": {
                  "id": 1305,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4194:0:2"
                },
                "scope": 2191,
                "src": "4095:884:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 1577,
                  "nodeType": "Block",
                  "src": "5157:1268:2",
                  "statements": [
                    {
                      "assignments": [
                        1420,
                        1422
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1420,
                          "mutability": "mutable",
                          "name": "feeTo",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1577,
                          "src": "5169:13:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1419,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "5169:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1422,
                          "mutability": "mutable",
                          "name": "rateProfitShare",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1577,
                          "src": "5184:20:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1421,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5184:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1428,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1424,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 990,
                                "src": "5223:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1423,
                              "name": "IFeSwapFactory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4789,
                              "src": "5208:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeSwapFactory_$4789_$",
                                "typeString": "type(contract IFeSwapFactory)"
                              }
                            },
                            "id": 1425,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "5208:23:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeSwapFactory_$4789",
                              "typeString": "contract IFeSwapFactory"
                            }
                          },
                          "id": 1426,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getFeeInfo",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4692,
                          "src": "5208:34:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_address_$_t_uint256_$",
                            "typeString": "function () view external returns (address,uint256)"
                          }
                        },
                        "id": 1427,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5208:36:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_uint256_$",
                          "typeString": "tuple(address,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5168:76:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1429,
                          "name": "feeOn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1417,
                          "src": "5255:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "id": 1444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1430,
                                  "name": "feeTo",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1420,
                                  "src": "5264:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1433,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5281:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 1432,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5273:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1431,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5273:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1434,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5273:10:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "5264:19:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 1436,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5263:21:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "||",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "id": 1442,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 1437,
                                  "name": "pairOwner",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 993,
                                  "src": "5289:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "!=",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1440,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5310:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 1439,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "5302:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1438,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "5302:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1441,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5302:10:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "src": "5289:23:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              }
                            ],
                            "id": 1443,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "5288:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "src": "5263:50:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5255:58:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 1446,
                      "nodeType": "ExpressionStatement",
                      "src": "5255:58:2"
                    },
                    {
                      "assignments": [
                        1448
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1448,
                          "mutability": "mutable",
                          "name": "_kLast",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1577,
                          "src": "5324:11:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1447,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5324:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1450,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 1449,
                        "name": "kLast",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1014,
                        "src": "5338:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5324:19:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 1451,
                        "name": "feeOn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1417,
                        "src": "5384:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1569,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 1567,
                            "name": "_kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1448,
                            "src": "6357:6:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 1568,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6367:1:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "6357:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 1575,
                        "nodeType": "IfStatement",
                        "src": "6353:53:2",
                        "trueBody": {
                          "id": 1574,
                          "nodeType": "Block",
                          "src": "6370:36:2",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 1572,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 1570,
                                  "name": "kLast",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1014,
                                  "src": "6385:5:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 1571,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "6393:1:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "src": "6385:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1573,
                              "nodeType": "ExpressionStatement",
                              "src": "6385:9:2"
                            }
                          ]
                        }
                      },
                      "id": 1576,
                      "nodeType": "IfStatement",
                      "src": "5380:1026:2",
                      "trueBody": {
                        "id": 1566,
                        "nodeType": "Block",
                        "src": "5391:956:2",
                        "statements": [
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1454,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1452,
                                "name": "_kLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1448,
                                "src": "5410:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1453,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5420:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5410:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 1565,
                            "nodeType": "IfStatement",
                            "src": "5406:930:2",
                            "trueBody": {
                              "id": 1564,
                              "nodeType": "Block",
                              "src": "5423:913:2",
                              "statements": [
                                {
                                  "assignments": [
                                    1456
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 1456,
                                      "mutability": "mutable",
                                      "name": "rootK",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 1564,
                                      "src": "5442:10:2",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 1455,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5442:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 1467,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 1464,
                                            "name": "_reserveOut",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1414,
                                            "src": "5486:11:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 1461,
                                                "name": "_reserveIn",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 1412,
                                                "src": "5470:10:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint112",
                                                  "typeString": "uint112"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_uint112",
                                                  "typeString": "uint112"
                                                }
                                              ],
                                              "id": 1460,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "5465:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_uint256_$",
                                                "typeString": "type(uint256)"
                                              },
                                              "typeName": {
                                                "id": 1459,
                                                "name": "uint",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "5465:4:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 1462,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "5465:16:2",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "id": 1463,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "mul",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6708,
                                          "src": "5465:20:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                                          }
                                        },
                                        "id": 1465,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "5465:33:2",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1457,
                                        "name": "Math",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6634,
                                        "src": "5455:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Math_$6634_$",
                                          "typeString": "type(library Math)"
                                        }
                                      },
                                      "id": 1458,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sqrt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6633,
                                      "src": "5455:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1466,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5455:44:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "5442:57:2"
                                },
                                {
                                  "assignments": [
                                    1469
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 1469,
                                      "mutability": "mutable",
                                      "name": "rootKLast",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 1564,
                                      "src": "5518:14:2",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 1468,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "5518:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 1474,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 1472,
                                        "name": "_kLast",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 1448,
                                        "src": "5545:6:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 1470,
                                        "name": "Math",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6634,
                                        "src": "5535:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_Math_$6634_$",
                                          "typeString": "type(library Math)"
                                        }
                                      },
                                      "id": 1471,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sqrt",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6633,
                                      "src": "5535:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 1473,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5535:17:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "5518:34:2"
                                },
                                {
                                  "condition": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1480,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 1475,
                                      "name": "rootK",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1456,
                                      "src": "5575:5:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": ">",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "3230",
                                          "id": 1478,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "number",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "5597:2:2",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_rational_20_by_1",
                                            "typeString": "int_const 20"
                                          },
                                          "value": "20"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_rational_20_by_1",
                                            "typeString": "int_const 20"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1476,
                                          "name": "rootKLast",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1469,
                                          "src": "5583:9:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1477,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6658,
                                        "src": "5583:13:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1479,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5583:17:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "5575:25:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "falseBody": null,
                                  "id": 1563,
                                  "nodeType": "IfStatement",
                                  "src": "5571:750:2",
                                  "trueBody": {
                                    "id": 1562,
                                    "nodeType": "Block",
                                    "src": "5602:719:2",
                                    "statements": [
                                      {
                                        "assignments": [
                                          1482
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 1482,
                                            "mutability": "mutable",
                                            "name": "numerator",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 1562,
                                            "src": "5679:14:2",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 1481,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "5679:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 1493,
                                        "initialValue": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "hexValue": "36",
                                              "id": 1491,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "5738:1:2",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_6_by_1",
                                                "typeString": "int_const 6"
                                              },
                                              "value": "6"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_rational_6_by_1",
                                                "typeString": "int_const 6"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "id": 1487,
                                                      "name": "rootKLast",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1469,
                                                      "src": "5722:9:2",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    ],
                                                    "expression": {
                                                      "argumentTypes": null,
                                                      "id": 1485,
                                                      "name": "rootK",
                                                      "nodeType": "Identifier",
                                                      "overloadedDeclarations": [],
                                                      "referencedDeclaration": 1456,
                                                      "src": "5712:5:2",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_uint256",
                                                        "typeString": "uint256"
                                                      }
                                                    },
                                                    "id": 1486,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": false,
                                                    "lValueRequested": false,
                                                    "memberName": "sub",
                                                    "nodeType": "MemberAccess",
                                                    "referencedDeclaration": 6680,
                                                    "src": "5712:9:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                    }
                                                  },
                                                  "id": 1488,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "kind": "functionCall",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "5712:20:2",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 1483,
                                                  "name": "totalSupply",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 23,
                                                  "src": "5696:11:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 1484,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 6708,
                                                "src": "5696:15:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 1489,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "5696:37:2",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1490,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "mul",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6708,
                                            "src": "5696:41:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 1492,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "5696:44:2",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "5679:61:2"
                                      },
                                      {
                                        "assignments": [
                                          1495
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 1495,
                                            "mutability": "mutable",
                                            "name": "denominator",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 1562,
                                            "src": "5763:16:2",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 1494,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "5763:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 1503,
                                        "initialValue": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 1501,
                                              "name": "rootKLast",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 1469,
                                              "src": "5813:9:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 1498,
                                                  "name": "rateProfitShare",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1422,
                                                  "src": "5792:15:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 1496,
                                                  "name": "rootK",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1456,
                                                  "src": "5782:5:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "id": 1497,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "memberName": "mul",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": 6708,
                                                "src": "5782:9:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                }
                                              },
                                              "id": 1499,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "5782:26:2",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "id": 1500,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "add",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 6658,
                                            "src": "5782:30:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                                            }
                                          },
                                          "id": 1502,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "5782:41:2",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "5763:60:2"
                                      },
                                      {
                                        "assignments": [
                                          1505
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 1505,
                                            "mutability": "mutable",
                                            "name": "liquidityCreator",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 1562,
                                            "src": "5846:21:2",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 1504,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "5846:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 1513,
                                        "initialValue": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1512,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 1506,
                                            "name": "numerator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1482,
                                            "src": "5870:9:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "hexValue": "3130",
                                                    "id": 1509,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "5899:2:2",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_10_by_1",
                                                      "typeString": "int_const 10"
                                                    },
                                                    "value": "10"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_10_by_1",
                                                      "typeString": "int_const 10"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 1507,
                                                    "name": "denominator",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1495,
                                                    "src": "5883:11:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1508,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 6708,
                                                  "src": "5883:15:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 1510,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "5883:19:2",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 1511,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "5882:21:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "5870:33:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "5846:57:2"
                                      },
                                      {
                                        "condition": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 1525,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 1516,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "id": 1514,
                                                  "name": "liquidityCreator",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1505,
                                                  "src": "5930:16:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 1515,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "5949:1:2",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "src": "5930:20:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              }
                                            ],
                                            "id": 1517,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "5929:22:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                "id": 1523,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "id": 1518,
                                                  "name": "pairOwner",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 993,
                                                  "src": "5956:9:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "hexValue": "30",
                                                      "id": 1521,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "5977:1:2",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                      },
                                                      "value": "0"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                      }
                                                    ],
                                                    "id": 1520,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "5969:7:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_address_$",
                                                      "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                      "id": 1519,
                                                      "name": "address",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "5969:7:2",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": null,
                                                        "typeString": null
                                                      }
                                                    }
                                                  },
                                                  "id": 1522,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "5969:10:2",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                  }
                                                },
                                                "src": "5956:23:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              }
                                            ],
                                            "id": 1524,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "5955:25:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "5929:51:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": null,
                                        "id": 1532,
                                        "nodeType": "IfStatement",
                                        "src": "5926:141:2",
                                        "trueBody": {
                                          "id": 1531,
                                          "nodeType": "Block",
                                          "src": "5982:85:2",
                                          "statements": [
                                            {
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 1527,
                                                    "name": "pairOwner",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 993,
                                                    "src": "6015:9:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 1528,
                                                    "name": "liquidityCreator",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1505,
                                                    "src": "6026:16:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "id": 1526,
                                                  "name": "_mint",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 134,
                                                  "src": "6009:5:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                    "typeString": "function (address,uint256)"
                                                  }
                                                },
                                                "id": 1529,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6009:34:2",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 1530,
                                              "nodeType": "ExpressionStatement",
                                              "src": "6009:34:2"
                                            }
                                          ]
                                        }
                                      },
                                      {
                                        "assignments": [
                                          1534
                                        ],
                                        "declarations": [
                                          {
                                            "constant": false,
                                            "id": 1534,
                                            "mutability": "mutable",
                                            "name": "liquidityFeSwap",
                                            "nodeType": "VariableDeclaration",
                                            "overrides": null,
                                            "scope": 1562,
                                            "src": "6090:20:2",
                                            "stateVariable": false,
                                            "storageLocation": "default",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "typeName": {
                                              "id": 1533,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "6090:4:2",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "value": null,
                                            "visibility": "internal"
                                          }
                                        ],
                                        "id": 1542,
                                        "initialValue": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 1541,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "id": 1535,
                                            "name": "numerator",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 1482,
                                            "src": "6113:9:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "/",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "hexValue": "3135",
                                                    "id": 1538,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "kind": "number",
                                                    "lValueRequested": false,
                                                    "nodeType": "Literal",
                                                    "src": "6142:2:2",
                                                    "subdenomination": null,
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_rational_15_by_1",
                                                      "typeString": "int_const 15"
                                                    },
                                                    "value": "15"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_rational_15_by_1",
                                                      "typeString": "int_const 15"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": null,
                                                    "id": 1536,
                                                    "name": "denominator",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1495,
                                                    "src": "6126:11:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  },
                                                  "id": 1537,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": false,
                                                  "lValueRequested": false,
                                                  "memberName": "mul",
                                                  "nodeType": "MemberAccess",
                                                  "referencedDeclaration": 6708,
                                                  "src": "6126:15:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                                  }
                                                },
                                                "id": 1539,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6126:19:2",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              }
                                            ],
                                            "id": 1540,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "6125:21:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "6113:33:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "VariableDeclarationStatement",
                                        "src": "6090:56:2"
                                      },
                                      {
                                        "condition": {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          },
                                          "id": 1554,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                },
                                                "id": 1545,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "id": 1543,
                                                  "name": "liquidityFeSwap",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1534,
                                                  "src": "6173:15:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_uint256",
                                                    "typeString": "uint256"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": ">",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "hexValue": "30",
                                                  "id": 1544,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "number",
                                                  "lValueRequested": false,
                                                  "nodeType": "Literal",
                                                  "src": "6191:1:2",
                                                  "subdenomination": null,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_rational_0_by_1",
                                                    "typeString": "int_const 0"
                                                  },
                                                  "value": "0"
                                                },
                                                "src": "6173:19:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              }
                                            ],
                                            "id": 1546,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "6172:21:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "&&",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "components": [
                                              {
                                                "argumentTypes": null,
                                                "commonType": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                },
                                                "id": 1552,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "lValueRequested": false,
                                                "leftExpression": {
                                                  "argumentTypes": null,
                                                  "id": 1547,
                                                  "name": "feeTo",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 1420,
                                                  "src": "6199:5:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                "nodeType": "BinaryOperation",
                                                "operator": "!=",
                                                "rightExpression": {
                                                  "argumentTypes": null,
                                                  "arguments": [
                                                    {
                                                      "argumentTypes": null,
                                                      "hexValue": "30",
                                                      "id": 1550,
                                                      "isConstant": false,
                                                      "isLValue": false,
                                                      "isPure": true,
                                                      "kind": "number",
                                                      "lValueRequested": false,
                                                      "nodeType": "Literal",
                                                      "src": "6216:1:2",
                                                      "subdenomination": null,
                                                      "typeDescriptions": {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                      },
                                                      "value": "0"
                                                    }
                                                  ],
                                                  "expression": {
                                                    "argumentTypes": [
                                                      {
                                                        "typeIdentifier": "t_rational_0_by_1",
                                                        "typeString": "int_const 0"
                                                      }
                                                    ],
                                                    "id": 1549,
                                                    "isConstant": false,
                                                    "isLValue": false,
                                                    "isPure": true,
                                                    "lValueRequested": false,
                                                    "nodeType": "ElementaryTypeNameExpression",
                                                    "src": "6208:7:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_type$_t_address_$",
                                                      "typeString": "type(address)"
                                                    },
                                                    "typeName": {
                                                      "id": 1548,
                                                      "name": "address",
                                                      "nodeType": "ElementaryTypeName",
                                                      "src": "6208:7:2",
                                                      "typeDescriptions": {
                                                        "typeIdentifier": null,
                                                        "typeString": null
                                                      }
                                                    }
                                                  },
                                                  "id": 1551,
                                                  "isConstant": false,
                                                  "isLValue": false,
                                                  "isPure": true,
                                                  "kind": "typeConversion",
                                                  "lValueRequested": false,
                                                  "names": [],
                                                  "nodeType": "FunctionCall",
                                                  "src": "6208:10:2",
                                                  "tryCall": false,
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address_payable",
                                                    "typeString": "address payable"
                                                  }
                                                },
                                                "src": "6199:19:2",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_bool",
                                                  "typeString": "bool"
                                                }
                                              }
                                            ],
                                            "id": 1553,
                                            "isConstant": false,
                                            "isInlineArray": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "nodeType": "TupleExpression",
                                            "src": "6198:21:2",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_bool",
                                              "typeString": "bool"
                                            }
                                          },
                                          "src": "6172:47:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bool",
                                            "typeString": "bool"
                                          }
                                        },
                                        "falseBody": null,
                                        "id": 1561,
                                        "nodeType": "IfStatement",
                                        "src": "6169:132:2",
                                        "trueBody": {
                                          "id": 1560,
                                          "nodeType": "Block",
                                          "src": "6221:80:2",
                                          "statements": [
                                            {
                                              "expression": {
                                                "argumentTypes": null,
                                                "arguments": [
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 1556,
                                                    "name": "feeTo",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1420,
                                                    "src": "6254:5:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    }
                                                  },
                                                  {
                                                    "argumentTypes": null,
                                                    "id": 1557,
                                                    "name": "liquidityFeSwap",
                                                    "nodeType": "Identifier",
                                                    "overloadedDeclarations": [],
                                                    "referencedDeclaration": 1534,
                                                    "src": "6261:15:2",
                                                    "typeDescriptions": {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": [
                                                    {
                                                      "typeIdentifier": "t_address",
                                                      "typeString": "address"
                                                    },
                                                    {
                                                      "typeIdentifier": "t_uint256",
                                                      "typeString": "uint256"
                                                    }
                                                  ],
                                                  "id": 1555,
                                                  "name": "_mint",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 134,
                                                  "src": "6248:5:2",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                                    "typeString": "function (address,uint256)"
                                                  }
                                                },
                                                "id": 1558,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": false,
                                                "kind": "functionCall",
                                                "lValueRequested": false,
                                                "names": [],
                                                "nodeType": "FunctionCall",
                                                "src": "6248:29:2",
                                                "tryCall": false,
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_tuple$__$",
                                                  "typeString": "tuple()"
                                                }
                                              },
                                              "id": 1559,
                                              "nodeType": "ExpressionStatement",
                                              "src": "6248:29:2"
                                            }
                                          ]
                                        }
                                      }
                                    ]
                                  }
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 1578,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_mintFee",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 1415,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1412,
                      "mutability": "mutable",
                      "name": "_reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1578,
                      "src": "5087:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1411,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "5087:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1414,
                      "mutability": "mutable",
                      "name": "_reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1578,
                      "src": "5107:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 1413,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "5107:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5086:41:2"
                },
                "returnParameters": {
                  "id": 1418,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1417,
                      "mutability": "mutable",
                      "name": "feeOn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1578,
                      "src": "5145:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 1416,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "5145:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5144:12:2"
                },
                "scope": 2191,
                "src": "5069:1356:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "baseFunctions": [
                  4893
                ],
                "body": {
                  "id": 1731,
                  "nodeType": "Block",
                  "src": "6611:1309:2",
                  "statements": [
                    {
                      "assignments": [
                        1589,
                        1591,
                        null,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1589,
                          "mutability": "mutable",
                          "name": "_reserveIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1731,
                          "src": "6623:18:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 1588,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "6623:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1591,
                          "mutability": "mutable",
                          "name": "_reserveOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1731,
                          "src": "6643:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 1590,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "6643:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null,
                        null
                      ],
                      "id": 1594,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1592,
                          "name": "getReserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1068,
                          "src": "6669:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                            "typeString": "function () view returns (uint112,uint112,uint32,uint256)"
                          }
                        },
                        "id": 1593,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6669:13:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                          "typeString": "tuple(uint112,uint112,uint32,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6622:60:2"
                    },
                    {
                      "assignments": [
                        1596
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1596,
                          "mutability": "mutable",
                          "name": "balanceIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1731,
                          "src": "6708:14:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1595,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6708:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1606,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1603,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6759:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              ],
                              "id": 1602,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6751:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1601,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6751:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1604,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6751:13:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1598,
                                "name": "tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 996,
                                "src": "6732:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1597,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4536,
                              "src": "6725:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 1599,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6725:15:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4536",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 1600,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4497,
                          "src": "6725:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 1605,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6725:40:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6708:57:2"
                    },
                    {
                      "assignments": [
                        1608
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1608,
                          "mutability": "mutable",
                          "name": "balanceOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1731,
                          "src": "6776:15:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1607,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6776:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1618,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1615,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "6829:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              ],
                              "id": 1614,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "6821:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1613,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "6821:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6821:13:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1610,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 999,
                                "src": "6801:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1609,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4536,
                              "src": "6794:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 1611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6794:16:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4536",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 1612,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4497,
                          "src": "6794:26:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 1617,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6794:41:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6776:59:2"
                    },
                    {
                      "assignments": [
                        1620
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1620,
                          "mutability": "mutable",
                          "name": "amountTokenIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1731,
                          "src": "6846:18:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1619,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6846:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1625,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1623,
                            "name": "_reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1589,
                            "src": "6881:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1621,
                            "name": "balanceIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1596,
                            "src": "6867:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1622,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6680,
                          "src": "6867:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1624,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6867:25:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6846:46:2"
                    },
                    {
                      "assignments": [
                        1627
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1627,
                          "mutability": "mutable",
                          "name": "amountTokenOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1731,
                          "src": "6903:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1626,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6903:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1632,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1630,
                            "name": "_reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1591,
                            "src": "6940:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1628,
                            "name": "balanceOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1608,
                            "src": "6925:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6680,
                          "src": "6925:14:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1631,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6925:27:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6903:49:2"
                    },
                    {
                      "assignments": [
                        1634
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1634,
                          "mutability": "mutable",
                          "name": "_kVlaue",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1731,
                          "src": "6963:12:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1633,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "6963:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1642,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1639,
                                "name": "amountTokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1627,
                                "src": "7006:14:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1637,
                                "name": "amountTokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1620,
                                "src": "6988:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1638,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6708,
                              "src": "6988:17:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "6988:33:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 1635,
                            "name": "Math",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6634,
                            "src": "6978:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_Math_$6634_$",
                              "typeString": "type(library Math)"
                            }
                          },
                          "id": 1636,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sqrt",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6633,
                          "src": "6978:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) pure returns (uint256)"
                          }
                        },
                        "id": 1641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6978:44:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "6963:59:2"
                    },
                    {
                      "assignments": [
                        1644
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1644,
                          "mutability": "mutable",
                          "name": "feeOn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1731,
                          "src": "7035:10:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1643,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "7035:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1649,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1646,
                            "name": "_reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1589,
                            "src": "7057:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1647,
                            "name": "_reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1591,
                            "src": "7069:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 1645,
                          "name": "_mintFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1578,
                          "src": "7048:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_bool_$",
                            "typeString": "function (uint112,uint112) returns (bool)"
                          }
                        },
                        "id": 1648,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7048:33:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7035:46:2"
                    },
                    {
                      "assignments": [
                        1651
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1651,
                          "mutability": "mutable",
                          "name": "_totalSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1731,
                          "src": "7092:17:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1650,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "7092:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1653,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 1652,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23,
                        "src": "7112:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "7092:31:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 1656,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 1654,
                          "name": "_totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1651,
                          "src": "7216:12:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "==",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 1655,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7232:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "7216:17:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 1691,
                        "nodeType": "Block",
                        "src": "7416:141:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1689,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1673,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1586,
                                "src": "7431:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1681,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1678,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1651,
                                          "src": "7470:12:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1676,
                                          "name": "amountTokenIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1620,
                                          "src": "7452:13:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1677,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6708,
                                        "src": "7452:17:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1679,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7452:31:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1680,
                                      "name": "_reserveIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1589,
                                      "src": "7486:10:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    "src": "7452:44:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 1687,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 1684,
                                          "name": "_totalSupply",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1651,
                                          "src": "7517:12:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 1682,
                                          "name": "amountTokenOut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1627,
                                          "src": "7498:14:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 1683,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6708,
                                        "src": "7498:18:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 1685,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "7498:32:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 1686,
                                      "name": "_reserveOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1591,
                                      "src": "7533:11:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    },
                                    "src": "7498:46:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1674,
                                    "name": "Math",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6634,
                                    "src": "7443:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_Math_$6634_$",
                                      "typeString": "type(library Math)"
                                    }
                                  },
                                  "id": 1675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "min",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6579,
                                  "src": "7443:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1688,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7443:102:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7431:114:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1690,
                            "nodeType": "ExpressionStatement",
                            "src": "7431:114:2"
                          }
                        ]
                      },
                      "id": 1692,
                      "nodeType": "IfStatement",
                      "src": "7212:345:2",
                      "trueBody": {
                        "id": 1672,
                        "nodeType": "Block",
                        "src": "7235:175:2",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 1662,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 1657,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1586,
                                "src": "7250:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1660,
                                    "name": "MINIMUM_LIQUIDITY",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 965,
                                    "src": "7274:17:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1658,
                                    "name": "_kVlaue",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1634,
                                    "src": "7262:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 1659,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6680,
                                  "src": "7262:11:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 1661,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7262:30:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7250:42:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 1663,
                            "nodeType": "ExpressionStatement",
                            "src": "7250:42:2"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 1667,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "7321:1:2",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 1666,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "7313:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1665,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "7313:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1668,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7313:10:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1669,
                                  "name": "MINIMUM_LIQUIDITY",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 965,
                                  "src": "7325:17:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 1664,
                                "name": "_mint",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 134,
                                "src": "7307:5:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,uint256)"
                                }
                              },
                              "id": 1670,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7307:36:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1671,
                            "nodeType": "ExpressionStatement",
                            "src": "7307:36:2"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1696,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1694,
                              "name": "liquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1586,
                              "src": "7575:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1695,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7587:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "7575:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20494e53554646494349454e545f4c49515549444954595f4d494e544544",
                            "id": 1697,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7590:39:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7c5fbd597a1da1302b3533191517232904034426e00a5f33305200f097408273",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_LIQUIDITY_MINTED\""
                            },
                            "value": "FeSwap: INSUFFICIENT_LIQUIDITY_MINTED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7c5fbd597a1da1302b3533191517232904034426e00a5f33305200f097408273",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_LIQUIDITY_MINTED\""
                            }
                          ],
                          "id": 1693,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7567:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1698,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7567:63:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1699,
                      "nodeType": "ExpressionStatement",
                      "src": "7567:63:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1701,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1580,
                            "src": "7647:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1702,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1586,
                            "src": "7651:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1700,
                          "name": "_mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 134,
                          "src": "7641:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 1703,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7641:20:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1704,
                      "nodeType": "ExpressionStatement",
                      "src": "7641:20:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1706,
                            "name": "balanceIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1596,
                            "src": "7682:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1707,
                            "name": "balanceOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1608,
                            "src": "7693:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1708,
                            "name": "_reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1589,
                            "src": "7705:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1709,
                            "name": "_reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1591,
                            "src": "7717:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 1705,
                          "name": "_update",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1410,
                          "src": "7674:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint256,uint256,uint112,uint112)"
                          }
                        },
                        "id": 1710,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7674:55:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1711,
                      "nodeType": "ExpressionStatement",
                      "src": "7674:55:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 1712,
                        "name": "feeOn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1644,
                        "src": "7744:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1723,
                      "nodeType": "IfStatement",
                      "src": "7740:50:2",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1721,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1713,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1014,
                            "src": "7751:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1719,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1003,
                                "src": "7779:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1716,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1001,
                                    "src": "7764:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  ],
                                  "id": 1715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "7759:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1714,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "7759:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1717,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7759:15:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1718,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6708,
                              "src": "7759:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1720,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "7759:31:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "7751:39:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1722,
                        "nodeType": "ExpressionStatement",
                        "src": "7751:39:2"
                      }
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1725,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "7870:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "7870:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1727,
                            "name": "amountTokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1620,
                            "src": "7882:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1728,
                            "name": "amountTokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1627,
                            "src": "7897:14:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1724,
                          "name": "Mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1165
                          ],
                          "referencedDeclaration": 1165,
                          "src": "7865:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256,uint256)"
                          }
                        },
                        "id": 1729,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7865:47:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1730,
                      "nodeType": "EmitStatement",
                      "src": "7860:52:2"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "6a627842",
                "id": 1732,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 1584,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 1583,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1039,
                      "src": "6581:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "6581:4:2"
                  }
                ],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1582,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "6572:8:2"
                },
                "parameters": {
                  "id": 1581,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1580,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1732,
                      "src": "6551:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1579,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6551:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6550:12:2"
                },
                "returnParameters": {
                  "id": 1587,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1586,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1732,
                      "src": "6595:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1585,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6595:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6594:16:2"
                },
                "scope": 2191,
                "src": "6537:1383:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4902
                ],
                "body": {
                  "id": 1903,
                  "nodeType": "Block",
                  "src": "8121:1442:2",
                  "statements": [
                    {
                      "assignments": [
                        1745,
                        1747,
                        null,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1745,
                          "mutability": "mutable",
                          "name": "_reserveIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1903,
                          "src": "8133:18:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 1744,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "8133:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1747,
                          "mutability": "mutable",
                          "name": "_reserveOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1903,
                          "src": "8153:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 1746,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "8153:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null,
                        null
                      ],
                      "id": 1750,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 1748,
                          "name": "getReserves",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1068,
                          "src": "8179:11:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                            "typeString": "function () view returns (uint112,uint112,uint32,uint256)"
                          }
                        },
                        "id": 1749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8179:13:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                          "typeString": "tuple(uint112,uint112,uint32,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8132:60:2"
                    },
                    {
                      "assignments": [
                        1752,
                        1754
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1752,
                          "mutability": "mutable",
                          "name": "_tokenIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1903,
                          "src": "8223:16:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1751,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8223:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1754,
                          "mutability": "mutable",
                          "name": "_tokenOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1903,
                          "src": "8241:17:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 1753,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "8241:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1758,
                      "initialValue": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "id": 1755,
                            "name": "tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 996,
                            "src": "8263:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1756,
                            "name": "tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 999,
                            "src": "8272:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "id": 1757,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "8262:19:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8222:59:2"
                    },
                    {
                      "assignments": [
                        1760
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1760,
                          "mutability": "mutable",
                          "name": "balanceIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1903,
                          "src": "8310:14:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1759,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8310:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1770,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1767,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8362:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              ],
                              "id": 1766,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8354:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1765,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8354:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8354:13:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1762,
                                "name": "_tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1752,
                                "src": "8334:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1761,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4536,
                              "src": "8327:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 1763,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8327:16:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4536",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 1764,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4497,
                          "src": "8327:26:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 1769,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8327:41:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8310:58:2"
                    },
                    {
                      "assignments": [
                        1772
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1772,
                          "mutability": "mutable",
                          "name": "balanceOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1903,
                          "src": "8379:15:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1771,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8379:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1782,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1779,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "8433:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              ],
                              "id": 1778,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "8425:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1777,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "8425:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1780,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8425:13:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1774,
                                "name": "_tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1754,
                                "src": "8404:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 1773,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4536,
                              "src": "8397:6:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 1775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8397:17:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4536",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 1776,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4497,
                          "src": "8397:27:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 1781,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8397:42:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8379:60:2"
                    },
                    {
                      "assignments": [
                        1784
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1784,
                          "mutability": "mutable",
                          "name": "liquidity",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1903,
                          "src": "8450:14:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1783,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8450:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1791,
                      "initialValue": {
                        "argumentTypes": null,
                        "baseExpression": {
                          "argumentTypes": null,
                          "id": 1785,
                          "name": "balanceOf",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 28,
                          "src": "8467:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                            "typeString": "mapping(address => uint256)"
                          }
                        },
                        "id": 1790,
                        "indexExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 1788,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "8485:4:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                "typeString": "contract FeSwapPair"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                "typeString": "contract FeSwapPair"
                              }
                            ],
                            "id": 1787,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "8477:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 1786,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "8477:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 1789,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8477:13:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "isConstant": false,
                        "isLValue": true,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "IndexAccess",
                        "src": "8467:24:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8450:41:2"
                    },
                    {
                      "assignments": [
                        1793
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1793,
                          "mutability": "mutable",
                          "name": "feeOn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1903,
                          "src": "8548:10:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 1792,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "8548:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1798,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1795,
                            "name": "_reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1745,
                            "src": "8570:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1796,
                            "name": "_reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1747,
                            "src": "8582:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 1794,
                          "name": "_mintFee",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1578,
                          "src": "8561:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint112_$_t_uint112_$returns$_t_bool_$",
                            "typeString": "function (uint112,uint112) returns (bool)"
                          }
                        },
                        "id": 1797,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8561:33:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8548:46:2"
                    },
                    {
                      "assignments": [
                        1800
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1800,
                          "mutability": "mutable",
                          "name": "_totalSupply",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 1903,
                          "src": "8605:17:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1799,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "8605:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1802,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 1801,
                        "name": "totalSupply",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 23,
                        "src": "8625:11:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "8605:31:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1810,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1803,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1740,
                          "src": "8748:8:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1809,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1806,
                                "name": "balanceIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1760,
                                "src": "8773:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1804,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1784,
                                "src": "8759:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6708,
                              "src": "8759:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1807,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8759:24:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1808,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1800,
                            "src": "8786:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8759:39:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8748:50:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1811,
                      "nodeType": "ExpressionStatement",
                      "src": "8748:50:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1819,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1812,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1742,
                          "src": "8861:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 1818,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1815,
                                "name": "balanceOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1772,
                                "src": "8887:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 1813,
                                "name": "liquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1784,
                                "src": "8873:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1814,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6708,
                              "src": "8873:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1816,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8873:25:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 1817,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1800,
                            "src": "8901:12:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8873:40:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8861:52:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1820,
                      "nodeType": "ExpressionStatement",
                      "src": "8861:52:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 1828,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1822,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1740,
                                "src": "8982:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1823,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "8993:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8982:12:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 1827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 1825,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1742,
                                "src": "8998:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 1826,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "9010:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "8998:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "8982:29:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20494e53554646494349454e545f4c49515549444954595f4255524e4544",
                            "id": 1829,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9013:39:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bdd938342a7f8e4b84ede074952f5831dcf5de4c6955919c4cba3e5515129e47",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_LIQUIDITY_BURNED\""
                            },
                            "value": "FeSwap: INSUFFICIENT_LIQUIDITY_BURNED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bdd938342a7f8e4b84ede074952f5831dcf5de4c6955919c4cba3e5515129e47",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_LIQUIDITY_BURNED\""
                            }
                          ],
                          "id": 1821,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "8974:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1830,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8974:79:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1831,
                      "nodeType": "ExpressionStatement",
                      "src": "8974:79:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1835,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "9080:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                  "typeString": "contract FeSwapPair"
                                }
                              ],
                              "id": 1834,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "9072:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 1833,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9072:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 1836,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9072:13:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1837,
                            "name": "liquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1784,
                            "src": "9087:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1832,
                          "name": "_burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 169,
                          "src": "9066:5:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 1838,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9066:31:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1839,
                      "nodeType": "ExpressionStatement",
                      "src": "9066:31:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1841,
                            "name": "_tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1752,
                            "src": "9122:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1842,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1734,
                            "src": "9132:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1843,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1740,
                            "src": "9136:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1840,
                          "name": "_safeTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "9108:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 1844,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9108:37:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1845,
                      "nodeType": "ExpressionStatement",
                      "src": "9108:37:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1847,
                            "name": "_tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1754,
                            "src": "9170:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1848,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1734,
                            "src": "9181:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1849,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1742,
                            "src": "9185:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 1846,
                          "name": "_safeTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "9156:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 1850,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9156:39:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1851,
                      "nodeType": "ExpressionStatement",
                      "src": "9156:39:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1862,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1852,
                          "name": "balanceIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1760,
                          "src": "9206:9:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1859,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "9253:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                    "typeString": "contract FeSwapPair"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                    "typeString": "contract FeSwapPair"
                                  }
                                ],
                                "id": 1858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9245:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1857,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9245:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1860,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9245:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1854,
                                  "name": "_tokenIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1752,
                                  "src": "9225:8:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1853,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4536,
                                "src": "9218:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 1855,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9218:16:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4536",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1856,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4497,
                            "src": "9218:26:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1861,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9218:41:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9206:53:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1863,
                      "nodeType": "ExpressionStatement",
                      "src": "9206:53:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 1874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 1864,
                          "name": "balanceOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1772,
                          "src": "9270:10:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1871,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "9319:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                    "typeString": "contract FeSwapPair"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                    "typeString": "contract FeSwapPair"
                                  }
                                ],
                                "id": 1870,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9311:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 1869,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9311:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 1872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9311:13:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 1866,
                                  "name": "_tokenOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1754,
                                  "src": "9290:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 1865,
                                "name": "IERC20",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4536,
                                "src": "9283:6:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                  "typeString": "type(contract IERC20)"
                                }
                              },
                              "id": 1867,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9283:17:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IERC20_$4536",
                                "typeString": "contract IERC20"
                              }
                            },
                            "id": 1868,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "balanceOf",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4497,
                            "src": "9283:27:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                              "typeString": "function (address) view external returns (uint256)"
                            }
                          },
                          "id": 1873,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9283:42:2",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9270:55:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 1875,
                      "nodeType": "ExpressionStatement",
                      "src": "9270:55:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 1877,
                            "name": "balanceIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1760,
                            "src": "9346:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1878,
                            "name": "balanceOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1772,
                            "src": "9357:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1879,
                            "name": "_reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1745,
                            "src": "9369:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1880,
                            "name": "_reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1747,
                            "src": "9381:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 1876,
                          "name": "_update",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1410,
                          "src": "9338:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint256,uint256,uint112,uint112)"
                          }
                        },
                        "id": 1881,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9338:55:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1882,
                      "nodeType": "ExpressionStatement",
                      "src": "9338:55:2"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "id": 1883,
                        "name": "feeOn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 1793,
                        "src": "9408:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 1894,
                      "nodeType": "IfStatement",
                      "src": "9404:50:2",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 1892,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 1884,
                            "name": "kLast",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1014,
                            "src": "9415:5:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1890,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1003,
                                "src": "9443:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 1887,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1001,
                                    "src": "9428:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint112",
                                      "typeString": "uint112"
                                    }
                                  ],
                                  "id": 1886,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9423:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 1885,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9423:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 1888,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9423:15:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 1889,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6708,
                              "src": "9423:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 1891,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9423:31:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9415:39:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 1893,
                        "nodeType": "ExpressionStatement",
                        "src": "9415:39:2"
                      }
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 1896,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "9519:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 1897,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "9519:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1898,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1740,
                            "src": "9531:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1899,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1742,
                            "src": "9541:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1900,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1734,
                            "src": "9552:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 1895,
                          "name": "Burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1175
                          ],
                          "referencedDeclaration": 1175,
                          "src": "9514:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                            "typeString": "function (address,uint256,uint256,address)"
                          }
                        },
                        "id": 1901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9514:41:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1902,
                      "nodeType": "EmitStatement",
                      "src": "9509:46:2"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "89afcb44",
                "id": 1904,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 1737,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 1736,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1039,
                      "src": "8067:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "8067:4:2"
                  }
                ],
                "name": "burn",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1738,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "8072:8:2"
                },
                "parameters": {
                  "id": 1735,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1734,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1904,
                      "src": "8046:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1733,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8046:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8045:12:2"
                },
                "returnParameters": {
                  "id": 1743,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1740,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1904,
                      "src": "8090:13:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1739,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8090:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1742,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 1904,
                      "src": "8105:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1741,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8105:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8089:31:2"
                },
                "scope": 2191,
                "src": "8032:1531:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4911
                ],
                "body": {
                  "id": 2096,
                  "nodeType": "Block",
                  "src": "9761:1637:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1919,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1917,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1906,
                              "src": "9780:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1918,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9792:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "9780:13:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 1920,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9795:36:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_ab47e6e0a701e904179395ef1ccac326fb011d183981bf4e676695a47646e50e",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "FeSwap: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_ab47e6e0a701e904179395ef1ccac326fb011d183981bf4e676695a47646e50e",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 1916,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "9772:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9772:60:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1922,
                      "nodeType": "ExpressionStatement",
                      "src": "9772:60:2"
                    },
                    {
                      "assignments": [
                        1924,
                        1926
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1924,
                          "mutability": "mutable",
                          "name": "_reserveIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2096,
                          "src": "9844:18:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 1923,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "9844:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 1926,
                          "mutability": "mutable",
                          "name": "_reserveOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2096,
                          "src": "9864:19:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 1925,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "9864:7:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1930,
                      "initialValue": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "id": 1927,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1001,
                            "src": "9888:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 1928,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1003,
                            "src": "9899:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "id": 1929,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "9887:23:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$",
                          "typeString": "tuple(uint112,uint112)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9843:67:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1934,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 1932,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1906,
                              "src": "9951:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 1933,
                              "name": "_reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1926,
                              "src": "9963:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "src": "9951:23:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20494e53554646494349454e545f4c4951554944495459",
                            "id": 1935,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9976:32:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3cde8cc6dbe491bba2d676b168c074a33427838799b83312b98c6a1920f4bd07",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "FeSwap: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3cde8cc6dbe491bba2d676b168c074a33427838799b83312b98c6a1920f4bd07",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 1931,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "9943:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 1936,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9943:66:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 1937,
                      "nodeType": "ExpressionStatement",
                      "src": "9943:66:2"
                    },
                    {
                      "assignments": [
                        1939
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1939,
                          "mutability": "mutable",
                          "name": "balanceIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2096,
                          "src": "10022:14:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1938,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10022:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1940,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10022:14:2"
                    },
                    {
                      "assignments": [
                        1942
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 1942,
                          "mutability": "mutable",
                          "name": "balanceOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2096,
                          "src": "10047:15:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 1941,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10047:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 1943,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10047:15:2"
                    },
                    {
                      "id": 2008,
                      "nodeType": "Block",
                      "src": "10073:544:2",
                      "statements": [
                        {
                          "assignments": [
                            1945,
                            1947
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 1945,
                              "mutability": "mutable",
                              "name": "_tokenIn",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2008,
                              "src": "10156:16:2",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "typeName": {
                                "id": 1944,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10156:7:2",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            },
                            {
                              "constant": false,
                              "id": 1947,
                              "mutability": "mutable",
                              "name": "_tokenOut",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 2008,
                              "src": "10174:17:2",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "typeName": {
                                "id": 1946,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10174:7:2",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 1951,
                          "initialValue": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "id": 1948,
                                "name": "tokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 996,
                                "src": "10196:7:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1949,
                                "name": "tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 999,
                                "src": "10205:8:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "id": 1950,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "10195:19:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                              "typeString": "tuple(address,address)"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "10155:59:2"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                "id": 1959,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 1955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1953,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1908,
                                    "src": "10263:2:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1954,
                                    "name": "_tokenIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1945,
                                    "src": "10269:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "10263:14:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "&&",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  "id": 1958,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 1956,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1908,
                                    "src": "10281:2:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "!=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 1957,
                                    "name": "_tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 1947,
                                    "src": "10287:9:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "src": "10281:15:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                "src": "10263:33:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "hexValue": "4665537761703a20494e56414c49445f544f",
                                "id": 1960,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10298:20:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_3fa83714b995acc2c51b2187762822b980896a2a7e8d05e1395a40b14302df96",
                                  "typeString": "literal_string \"FeSwap: INVALID_TO\""
                                },
                                "value": "FeSwap: INVALID_TO"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                },
                                {
                                  "typeIdentifier": "t_stringliteral_3fa83714b995acc2c51b2187762822b980896a2a7e8d05e1395a40b14302df96",
                                  "typeString": "literal_string \"FeSwap: INVALID_TO\""
                                }
                              ],
                              "id": 1952,
                              "name": "require",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [
                                -18,
                                -18
                              ],
                              "referencedDeclaration": -18,
                              "src": "10255:7:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                "typeString": "function (bool,string memory) pure"
                              }
                            },
                            "id": 1961,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10255:64:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1962,
                          "nodeType": "ExpressionStatement",
                          "src": "10255:64:2"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 1964,
                                "name": "_tokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1947,
                                "src": "10348:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1965,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1908,
                                "src": "10359:2:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 1966,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1906,
                                "src": "10363:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 1963,
                              "name": "_safeTransfer",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1111,
                              "src": "10334:13:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                "typeString": "function (address,address,uint256)"
                              }
                            },
                            "id": 1967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10334:39:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 1968,
                          "nodeType": "ExpressionStatement",
                          "src": "10334:39:2"
                        },
                        {
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 1972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 1969,
                                "name": "data",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1910,
                                "src": "10393:4:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_calldata_ptr",
                                  "typeString": "bytes calldata"
                                }
                              },
                              "id": 1970,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "10393:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 1971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10407:1:2",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "10393:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseBody": null,
                          "id": 1983,
                          "nodeType": "IfStatement",
                          "src": "10389:78:2",
                          "trueBody": {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 1977,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "10439:3:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 1978,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "10439:10:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1979,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1906,
                                  "src": "10451:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 1980,
                                  "name": "data",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1910,
                                  "src": "10462:4:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_calldata_ptr",
                                    "typeString": "bytes calldata"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1974,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1908,
                                      "src": "10424:2:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1973,
                                    "name": "IFeSwapCallee",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4548,
                                    "src": "10410:13:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapCallee_$4548_$",
                                      "typeString": "type(contract IFeSwapCallee)"
                                    }
                                  },
                                  "id": 1975,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10410:17:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapCallee_$4548",
                                    "typeString": "contract IFeSwapCallee"
                                  }
                                },
                                "id": 1976,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "FeSwapCall",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4547,
                                "src": "10410:28:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (address,uint256,bytes memory) external"
                                }
                              },
                              "id": 1981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10410:57:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 1982,
                            "nodeType": "ExpressionStatement",
                            "src": "10410:57:2"
                          }
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 1994,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1984,
                              "name": "balanceIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1939,
                              "src": "10482:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1991,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "10529:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                        "typeString": "contract FeSwapPair"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                        "typeString": "contract FeSwapPair"
                                      }
                                    ],
                                    "id": 1990,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10521:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 1989,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10521:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 1992,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10521:13:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1986,
                                      "name": "_tokenIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1945,
                                      "src": "10501:8:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1985,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4536,
                                    "src": "10494:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 1987,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10494:16:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4536",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 1988,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4497,
                                "src": "10494:26:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 1993,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10494:41:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10482:53:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 1995,
                          "nodeType": "ExpressionStatement",
                          "src": "10482:53:2"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "id": 2006,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftHandSide": {
                              "argumentTypes": null,
                              "id": 1996,
                              "name": "balanceOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1942,
                              "src": "10550:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "Assignment",
                            "operator": "=",
                            "rightHandSide": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2003,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "10599:4:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                        "typeString": "contract FeSwapPair"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                        "typeString": "contract FeSwapPair"
                                      }
                                    ],
                                    "id": 2002,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "10591:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 2001,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "10591:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 2004,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10591:13:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 1998,
                                      "name": "_tokenOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1947,
                                      "src": "10570:9:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 1997,
                                    "name": "IERC20",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4536,
                                    "src": "10563:6:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                      "typeString": "type(contract IERC20)"
                                    }
                                  },
                                  "id": 1999,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "10563:17:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IERC20_$4536",
                                    "typeString": "contract IERC20"
                                  }
                                },
                                "id": 2000,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "balanceOf",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4497,
                                "src": "10563:27:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                  "typeString": "function (address) view external returns (uint256)"
                                }
                              },
                              "id": 2005,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10563:42:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "10550:55:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2007,
                          "nodeType": "ExpressionStatement",
                          "src": "10550:55:2"
                        }
                      ]
                    },
                    {
                      "assignments": [
                        2010
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2010,
                          "mutability": "mutable",
                          "name": "amountInTokenIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2096,
                          "src": "10629:20:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2009,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10629:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2019,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2013,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2011,
                            "name": "balanceIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1939,
                            "src": "10652:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2012,
                            "name": "_reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1924,
                            "src": "10664:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "10652:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2017,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10702:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 2018,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "10652:51:2",
                        "trueExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2014,
                            "name": "balanceIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1939,
                            "src": "10677:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 2015,
                            "name": "_reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1924,
                            "src": "10689:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "src": "10677:22:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10629:74:2"
                    },
                    {
                      "assignments": [
                        2021
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2021,
                          "mutability": "mutable",
                          "name": "amountInTokenOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2096,
                          "src": "10714:21:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2020,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10714:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2036,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2027,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2022,
                            "name": "balanceOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1942,
                            "src": "10738:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": ">",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2025,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2023,
                                  "name": "_reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1926,
                                  "src": "10752:11:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2024,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1906,
                                  "src": "10766:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10752:23:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2026,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "10751:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10738:38:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 2034,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10865:1:2",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "id": 2035,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "10738:128:2",
                        "trueExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2033,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2028,
                            "name": "balanceOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1942,
                            "src": "10824:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2031,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 2029,
                                  "name": "_reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1926,
                                  "src": "10838:11:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 2030,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1906,
                                  "src": "10852:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "10838:23:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 2032,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "10837:25:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10824:38:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10714:152:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 2044,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2040,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2038,
                                "name": "amountInTokenIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2010,
                                "src": "10911:15:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2039,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10929:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10911:19:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2043,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2041,
                                "name": "amountInTokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2021,
                                "src": "10934:16:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 2042,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10953:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "10934:20:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "10911:43:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20494e53554646494349454e545f494e5055545f414d4f554e54",
                            "id": 2045,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10956:35:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a496d98186ae67a16a6594c27dad24b809dba3cef2c7dcf6ca5d9e618371449e",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_INPUT_AMOUNT\""
                            },
                            "value": "FeSwap: INSUFFICIENT_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a496d98186ae67a16a6594c27dad24b809dba3cef2c7dcf6ca5d9e618371449e",
                              "typeString": "literal_string \"FeSwap: INSUFFICIENT_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 2037,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "10903:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2046,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10903:89:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2047,
                      "nodeType": "ExpressionStatement",
                      "src": "10903:89:2"
                    },
                    {
                      "assignments": [
                        2049
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2049,
                          "mutability": "mutable",
                          "name": "balanceOutAdjusted",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2096,
                          "src": "11005:23:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2048,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "11005:4:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2060,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "33",
                                "id": 2057,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11077:1:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                },
                                "value": "3"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_3_by_1",
                                  "typeString": "int_const 3"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2055,
                                "name": "amountInTokenOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2021,
                                "src": "11056:16:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2056,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6708,
                              "src": "11056:20:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2058,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11056:23:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 2052,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11046:4:2",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 2050,
                                "name": "balanceOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1942,
                                "src": "11031:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2051,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6708,
                              "src": "11031:14:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2053,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11031:20:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 2054,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6680,
                          "src": "11031:24:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 2059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11031:49:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11005:75:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2076,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2064,
                                  "name": "balanceOutAdjusted",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2049,
                                  "src": "11160:18:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2062,
                                  "name": "balanceIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 1939,
                                  "src": "11146:9:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2063,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6708,
                                "src": "11146:13:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11146:33:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 2074,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "11221:4:2",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2071,
                                      "name": "_reserveOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 1926,
                                      "src": "11204:11:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint112",
                                        "typeString": "uint112"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2068,
                                          "name": "_reserveIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 1924,
                                          "src": "11188:10:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint112",
                                            "typeString": "uint112"
                                          }
                                        ],
                                        "id": 2067,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "11183:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 2066,
                                          "name": "uint",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "11183:4:2",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 2069,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "11183:16:2",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2070,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6708,
                                    "src": "11183:20:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2072,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "11183:33:2",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 2073,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6708,
                                "src": "11183:37:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2075,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "11183:43:2",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11146:80:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a204b",
                            "id": 2077,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "11228:11:2",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3f10e50216d1788450082dc5d7888b2e7aea77099e766aa4c31674ed1857ea2d",
                              "typeString": "literal_string \"FeSwap: K\""
                            },
                            "value": "FeSwap: K"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3f10e50216d1788450082dc5d7888b2e7aea77099e766aa4c31674ed1857ea2d",
                              "typeString": "literal_string \"FeSwap: K\""
                            }
                          ],
                          "id": 2061,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "11138:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2078,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11138:102:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2079,
                      "nodeType": "ExpressionStatement",
                      "src": "11138:102:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2081,
                            "name": "balanceIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1939,
                            "src": "11261:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2082,
                            "name": "balanceOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1942,
                            "src": "11272:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2083,
                            "name": "_reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1924,
                            "src": "11284:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2084,
                            "name": "_reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1926,
                            "src": "11296:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 2080,
                          "name": "_update",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1410,
                          "src": "11253:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint256,uint256,uint112,uint112)"
                          }
                        },
                        "id": 2085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11253:55:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2086,
                      "nodeType": "ExpressionStatement",
                      "src": "11253:55:2"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2088,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "11329:3:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 2089,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11329:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2090,
                            "name": "amountInTokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2010,
                            "src": "11341:15:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2091,
                            "name": "amountInTokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2021,
                            "src": "11358:16:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2092,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1906,
                            "src": "11376:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2093,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 1908,
                            "src": "11387:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 2087,
                          "name": "Swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            1187
                          ],
                          "referencedDeclaration": 1187,
                          "src": "11324:4:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$returns$__$",
                            "typeString": "function (address,uint256,uint256,uint256,address)"
                          }
                        },
                        "id": 2094,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11324:66:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2095,
                      "nodeType": "EmitStatement",
                      "src": "11319:71:2"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "1c6da724",
                "id": 2097,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 1913,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 1912,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1039,
                      "src": "9747:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "9747:4:2"
                  }
                ],
                "name": "swap",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 1914,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "9752:8:2"
                },
                "parameters": {
                  "id": 1911,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 1906,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2097,
                      "src": "9689:14:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 1905,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9689:4:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1908,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2097,
                      "src": "9705:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 1907,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9705:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 1910,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2097,
                      "src": "9717:19:2",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 1909,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "9717:5:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9688:49:2"
                },
                "returnParameters": {
                  "id": 1915,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "9761:0:2"
                },
                "scope": 2191,
                "src": "9675:1723:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4916
                ],
                "body": {
                  "id": 2147,
                  "nodeType": "Block",
                  "src": "11496:309:2",
                  "statements": [
                    {
                      "assignments": [
                        2106
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2106,
                          "mutability": "mutable",
                          "name": "_tokenIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2147,
                          "src": "11507:16:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2105,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11507:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2108,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 2107,
                        "name": "tokenIn",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 996,
                        "src": "11526:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11507:26:2"
                    },
                    {
                      "assignments": [
                        2110
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2110,
                          "mutability": "mutable",
                          "name": "_tokenOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2147,
                          "src": "11559:17:2",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2109,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11559:7:2",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2112,
                      "initialValue": {
                        "argumentTypes": null,
                        "id": 2111,
                        "name": "tokenOut",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 999,
                        "src": "11579:8:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11559:28:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2114,
                            "name": "_tokenIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2106,
                            "src": "11627:8:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2115,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2099,
                            "src": "11637:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2126,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1001,
                                "src": "11687:9:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2122,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "11676:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                          "typeString": "contract FeSwapPair"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                          "typeString": "contract FeSwapPair"
                                        }
                                      ],
                                      "id": 2121,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11668:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2120,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11668:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2123,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11668:13:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2117,
                                        "name": "_tokenIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2106,
                                        "src": "11648:8:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2116,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4536,
                                      "src": "11641:6:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 2118,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11641:16:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4536",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2119,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4497,
                                  "src": "11641:26:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 2124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11641:41:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6680,
                              "src": "11641:45:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2127,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11641:56:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2113,
                          "name": "_safeTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "11613:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11613:85:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2129,
                      "nodeType": "ExpressionStatement",
                      "src": "11613:85:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2131,
                            "name": "_tokenOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2110,
                            "src": "11723:9:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2132,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2099,
                            "src": "11734:2:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2143,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 1003,
                                "src": "11785:10:2",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2139,
                                        "name": "this",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -28,
                                        "src": "11774:4:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                          "typeString": "contract FeSwapPair"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                          "typeString": "contract FeSwapPair"
                                        }
                                      ],
                                      "id": 2138,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "11766:7:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_address_$",
                                        "typeString": "type(address)"
                                      },
                                      "typeName": {
                                        "id": 2137,
                                        "name": "address",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "11766:7:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 2140,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11766:13:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2134,
                                        "name": "_tokenOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2110,
                                        "src": "11745:9:2",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2133,
                                      "name": "IERC20",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4536,
                                      "src": "11738:6:2",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                        "typeString": "type(contract IERC20)"
                                      }
                                    },
                                    "id": 2135,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "11738:17:2",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IERC20_$4536",
                                      "typeString": "contract IERC20"
                                    }
                                  },
                                  "id": 2136,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "balanceOf",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4497,
                                  "src": "11738:27:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) view external returns (uint256)"
                                  }
                                },
                                "id": 2141,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11738:42:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 2142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sub",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6680,
                              "src": "11738:46:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 2144,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11738:58:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 2130,
                          "name": "_safeTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1111,
                          "src": "11709:13:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 2145,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11709:88:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2146,
                      "nodeType": "ExpressionStatement",
                      "src": "11709:88:2"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "bc25cf77",
                "id": 2148,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2102,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2101,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1039,
                      "src": "11482:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "11482:4:2"
                  }
                ],
                "name": "skim",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2103,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11487:8:2"
                },
                "parameters": {
                  "id": 2100,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2099,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2148,
                      "src": "11461:10:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2098,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11461:7:2",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11460:12:2"
                },
                "returnParameters": {
                  "id": 2104,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "11496:0:2"
                },
                "scope": 2191,
                "src": "11447:358:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4923
                ],
                "body": {
                  "id": 2189,
                  "nodeType": "Block",
                  "src": "11942:198:2",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2158,
                              "name": "_reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2154,
                              "src": "11954:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2159,
                              "name": "_reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2156,
                              "src": "11966:11:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "id": 2160,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "11953:25:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$",
                            "typeString": "tuple(uint112,uint112)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2161,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1001,
                              "src": "11982:9:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2162,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 1003,
                              "src": "11993:10:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            }
                          ],
                          "id": 2163,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "11981:23:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$",
                            "typeString": "tuple(uint112,uint112)"
                          }
                        },
                        "src": "11953:51:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2165,
                      "nodeType": "ExpressionStatement",
                      "src": "11953:51:2"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2173,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "12057:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                      "typeString": "contract FeSwapPair"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                      "typeString": "contract FeSwapPair"
                                    }
                                  ],
                                  "id": 2172,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12049:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2171,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12049:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2174,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12049:13:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2168,
                                    "name": "tokenIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 996,
                                    "src": "12030:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2167,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4536,
                                  "src": "12023:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 2169,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12023:15:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$4536",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 2170,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4497,
                              "src": "12023:25:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 2175,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12023:40:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2182,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "12100:4:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                      "typeString": "contract FeSwapPair"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_FeSwapPair_$2191",
                                      "typeString": "contract FeSwapPair"
                                    }
                                  ],
                                  "id": 2181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "12092:7:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 2180,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "12092:7:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 2183,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12092:13:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2177,
                                    "name": "tokenOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 999,
                                    "src": "12072:8:2",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 2176,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4536,
                                  "src": "12065:6:2",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 2178,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12065:16:2",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$4536",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 2179,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4497,
                              "src": "12065:26:2",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 2184,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "12065:41:2",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2185,
                            "name": "_reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2154,
                            "src": "12108:10:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 2186,
                            "name": "_reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2156,
                            "src": "12120:11:2",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          ],
                          "id": 2166,
                          "name": "_update",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 1410,
                          "src": "12015:7:2",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_uint256_$_t_uint256_$_t_uint112_$_t_uint112_$returns$__$",
                            "typeString": "function (uint256,uint256,uint112,uint112)"
                          }
                        },
                        "id": 2187,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12015:117:2",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2188,
                      "nodeType": "ExpressionStatement",
                      "src": "12015:117:2"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fff6cae9",
                "id": 2190,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": null,
                    "id": 2151,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2150,
                      "name": "lock",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 1039,
                      "src": "11879:4:2",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$__$",
                        "typeString": "modifier ()"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "11879:4:2"
                  }
                ],
                "name": "sync",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2152,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11884:8:2"
                },
                "parameters": {
                  "id": 2149,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "11867:2:2"
                },
                "returnParameters": {
                  "id": 2157,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2154,
                      "mutability": "mutable",
                      "name": "_reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2190,
                      "src": "11901:18:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 2153,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "11901:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2156,
                      "mutability": "mutable",
                      "name": "_reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2190,
                      "src": "11921:19:2",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 2155,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "11921:7:2",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11900:41:2"
                },
                "scope": 2191,
                "src": "11854:286:2",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 2192,
            "src": "325:11818:2"
          }
        ],
        "src": "37:12108:2"
      }
    },
    "contracts/FeSwapRouter.sol": {
      "id": 3,
      "AST": {
        "absolutePath": "contracts/FeSwapRouter.sol",
        "exportedSymbols": {
          "FeSwapRouter": [
            4452
          ],
          "FeswaPair": [
            2221
          ],
          "IFeswaNFT": [
            2238
          ],
          "PoolRunningPhase": [
            2208
          ]
        },
        "id": 4453,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 2193,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:3"
          },
          {
            "id": 2194,
            "literals": [
              "experimental",
              "ABIEncoderV2"
            ],
            "nodeType": "PragmaDirective",
            "src": "63:33:3"
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapFactory.sol",
            "file": "./interfaces/IFeSwapFactory.sol",
            "id": 2195,
            "nodeType": "ImportDirective",
            "scope": 4453,
            "sourceUnit": 4790,
            "src": "100:41:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/TransferHelper.sol",
            "file": "./libraries/TransferHelper.sol",
            "id": 2196,
            "nodeType": "ImportDirective",
            "scope": 4453,
            "sourceUnit": 6870,
            "src": "143:40:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapRouter.sol",
            "file": "./interfaces/IFeSwapRouter.sol",
            "id": 2197,
            "nodeType": "ImportDirective",
            "scope": 4453,
            "sourceUnit": 5361,
            "src": "187:40:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/FeSwapLibrary.sol",
            "file": "./libraries/FeSwapLibrary.sol",
            "id": 2198,
            "nodeType": "ImportDirective",
            "scope": 4453,
            "sourceUnit": 6211,
            "src": "229:39:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "./libraries/SafeMath.sol",
            "id": 2199,
            "nodeType": "ImportDirective",
            "scope": 4453,
            "sourceUnit": 6710,
            "src": "270:34:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IERC20.sol",
            "file": "./interfaces/IERC20.sol",
            "id": 2200,
            "nodeType": "ImportDirective",
            "scope": 4453,
            "sourceUnit": 4537,
            "src": "306:33:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IWETH.sol",
            "file": "./interfaces/IWETH.sol",
            "id": 2201,
            "nodeType": "ImportDirective",
            "scope": 4453,
            "sourceUnit": 5421,
            "src": "341:32:3",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "canonicalName": "PoolRunningPhase",
            "id": 2208,
            "members": [
              {
                "id": 2202,
                "name": "BidToStart",
                "nodeType": "EnumValue",
                "src": "414:10:3"
              },
              {
                "id": 2203,
                "name": "BidPhase",
                "nodeType": "EnumValue",
                "src": "435:8:3"
              },
              {
                "id": 2204,
                "name": "BidDelaying",
                "nodeType": "EnumValue",
                "src": "455:11:3"
              },
              {
                "id": 2205,
                "name": "BidSettled",
                "nodeType": "EnumValue",
                "src": "477:10:3"
              },
              {
                "id": 2206,
                "name": "PoolHolding",
                "nodeType": "EnumValue",
                "src": "498:11:3"
              },
              {
                "id": 2207,
                "name": "PoolForSale",
                "nodeType": "EnumValue",
                "src": "521:11:3"
              }
            ],
            "name": "PoolRunningPhase",
            "nodeType": "EnumDefinition",
            "src": "381:158:3"
          },
          {
            "canonicalName": "FeswaPair",
            "id": 2221,
            "members": [
              {
                "constant": false,
                "id": 2210,
                "mutability": "mutable",
                "name": "tokenA",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2221,
                "src": "575:14:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2209,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "575:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2212,
                "mutability": "mutable",
                "name": "tokenB",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2221,
                "src": "600:14:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2211,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "600:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2214,
                "mutability": "mutable",
                "name": "currentPrice",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2221,
                "src": "625:20:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 2213,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "625:7:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2216,
                "mutability": "mutable",
                "name": "timeCreated",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2221,
                "src": "656:19:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2215,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "656:6:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2218,
                "mutability": "mutable",
                "name": "lastBidTime",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2221,
                "src": "686:19:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 2217,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "686:6:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 2220,
                "mutability": "mutable",
                "name": "poolState",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 2221,
                "src": "717:27:3",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_PoolRunningPhase_$2208",
                  "typeString": "enum PoolRunningPhase"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 2219,
                  "name": "PoolRunningPhase",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 2208,
                  "src": "717:16:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_PoolRunningPhase_$2208",
                    "typeString": "enum PoolRunningPhase"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "FeswaPair",
            "nodeType": "StructDefinition",
            "scope": 4453,
            "src": "547:205:3",
            "visibility": "public"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 2238,
            "linearizedBaseContracts": [
              2238
            ],
            "name": "IFeswaNFT",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "6352211e",
                "id": 2228,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "ownerOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2224,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2223,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2228,
                      "src": "820:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2222,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "820:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "819:17:3"
                },
                "returnParameters": {
                  "id": 2227,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2226,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2228,
                      "src": "860:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2225,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "860:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "859:15:3"
                },
                "scope": 2238,
                "src": "803:72:3",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "2f380b35",
                "id": 2237,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getPoolInfo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2231,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2230,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2237,
                      "src": "902:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2229,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "902:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "901:17:3"
                },
                "returnParameters": {
                  "id": 2236,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2233,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2237,
                      "src": "942:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2232,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "942:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2235,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2237,
                      "src": "951:16:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_FeswaPair_$2221_memory_ptr",
                        "typeString": "struct FeswaPair"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 2234,
                        "name": "FeswaPair",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 2221,
                        "src": "951:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_FeswaPair_$2221_storage_ptr",
                          "typeString": "struct FeswaPair"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "941:27:3"
                },
                "scope": 2238,
                "src": "881:88:3",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 4453,
            "src": "762:210:3"
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 2239,
                  "name": "IFeSwapRouter",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 5360,
                  "src": "1001:13:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IFeSwapRouter_$5360",
                    "typeString": "contract IFeSwapRouter"
                  }
                },
                "id": 2240,
                "nodeType": "InheritanceSpecifier",
                "src": "1001:13:3"
              }
            ],
            "contractDependencies": [
              5360
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 4452,
            "linearizedBaseContracts": [
              4452,
              5360
            ],
            "name": "FeSwapRouter",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 2243,
                "libraryName": {
                  "contractScope": null,
                  "id": 2241,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6709,
                  "src": "1027:8:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$6709",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "1021:24:3",
                "typeName": {
                  "id": 2242,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "1040:4:3",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "baseFunctions": [
                  4955
                ],
                "constant": false,
                "functionSelector": "c45a0155",
                "id": 2246,
                "mutability": "immutable",
                "name": "factory",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 2245,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1078:8:3"
                },
                "scope": 4452,
                "src": "1053:41:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2244,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1053:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4960
                ],
                "constant": false,
                "functionSelector": "ead86a29",
                "id": 2249,
                "mutability": "immutable",
                "name": "feswaNFT",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 2248,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1126:8:3"
                },
                "scope": 4452,
                "src": "1101:42:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2247,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1101:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  4965
                ],
                "constant": false,
                "functionSelector": "ad5c4648",
                "id": 2252,
                "mutability": "immutable",
                "name": "WETH",
                "nodeType": "VariableDeclaration",
                "overrides": {
                  "id": 2251,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1175:8:3"
                },
                "scope": 4452,
                "src": "1150:38:3",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 2250,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "1150:7:3",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2265,
                  "nodeType": "Block",
                  "src": "1228:92:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2257,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2254,
                              "src": "1247:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2258,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "1259:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 2259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1259:15:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1247:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a2045585049524544",
                            "id": 2261,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1276:23:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_1e7cb7efd28e7b9d0cde0ce53a26610c5984b53e9e4c4874e5270a41fc824e3a",
                              "typeString": "literal_string \"FeSwapRouter: EXPIRED\""
                            },
                            "value": "FeSwapRouter: EXPIRED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_1e7cb7efd28e7b9d0cde0ce53a26610c5984b53e9e4c4874e5270a41fc824e3a",
                              "typeString": "literal_string \"FeSwapRouter: EXPIRED\""
                            }
                          ],
                          "id": 2256,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1239:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1239:61:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2263,
                      "nodeType": "ExpressionStatement",
                      "src": "1239:61:3"
                    },
                    {
                      "id": 2264,
                      "nodeType": "PlaceholderStatement",
                      "src": "1311:1:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 2266,
                "name": "ensure",
                "nodeType": "ModifierDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2255,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2254,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2266,
                      "src": "1213:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2253,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1213:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1212:15:3"
                },
                "src": "1197:123:3",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 2287,
                  "nodeType": "Block",
                  "src": "1399:91:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2277,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2275,
                          "name": "factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2246,
                          "src": "1410:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2276,
                          "name": "_factory",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2268,
                          "src": "1420:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1410:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2278,
                      "nodeType": "ExpressionStatement",
                      "src": "1410:18:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2281,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2279,
                          "name": "feswaNFT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2249,
                          "src": "1439:8:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2280,
                          "name": "_feswaNFT",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2270,
                          "src": "1450:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1439:20:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2282,
                      "nodeType": "ExpressionStatement",
                      "src": "1439:20:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2285,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2283,
                          "name": "WETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2252,
                          "src": "1470:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 2284,
                          "name": "_WETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2272,
                          "src": "1477:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1470:12:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2286,
                      "nodeType": "ExpressionStatement",
                      "src": "1470:12:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 2288,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2273,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2268,
                      "mutability": "mutable",
                      "name": "_factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2288,
                      "src": "1340:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2267,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1340:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2270,
                      "mutability": "mutable",
                      "name": "_feswaNFT",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2288,
                      "src": "1358:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2269,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1358:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2272,
                      "mutability": "mutable",
                      "name": "_WETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2288,
                      "src": "1377:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2271,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1377:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1339:52:3"
                },
                "returnParameters": {
                  "id": 2274,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1399:0:3"
                },
                "scope": 4452,
                "src": "1328:162:3",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 2298,
                  "nodeType": "Block",
                  "src": "1525:100:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2292,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1543:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2293,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1543:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2294,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "1557:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1543:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 2291,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "1536:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 2296,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1536:26:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2297,
                      "nodeType": "ExpressionStatement",
                      "src": "1536:26:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 2299,
                "implemented": true,
                "kind": "receive",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2289,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1505:2:3"
                },
                "returnParameters": {
                  "id": 2290,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1525:0:3"
                },
                "scope": 4452,
                "src": "1498:127:3",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  4978
                ],
                "body": {
                  "id": 2365,
                  "nodeType": "Block",
                  "src": "1863:469:3",
                  "statements": [
                    {
                      "assignments": [
                        2314,
                        2316
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2314,
                          "mutability": "mutable",
                          "name": "nftOwner",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2365,
                          "src": "1875:16:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2313,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "1875:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2316,
                          "mutability": "mutable",
                          "name": "NftBidInfo",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2365,
                          "src": "1893:27:3",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_struct$_FeswaPair_$2221_memory_ptr",
                            "typeString": "struct FeswaPair"
                          },
                          "typeName": {
                            "contractScope": null,
                            "id": 2315,
                            "name": "FeswaPair",
                            "nodeType": "UserDefinedTypeName",
                            "referencedDeclaration": 2221,
                            "src": "1893:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_FeswaPair_$2221_storage_ptr",
                              "typeString": "struct FeswaPair"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2323,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 2321,
                            "name": "tokenID",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2301,
                            "src": "1956:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2318,
                                "name": "feswaNFT",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2249,
                                "src": "1934:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2317,
                              "name": "IFeswaNFT",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2238,
                              "src": "1924:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeswaNFT_$2238_$",
                                "typeString": "type(contract IFeswaNFT)"
                              }
                            },
                            "id": 2319,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1924:19:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeswaNFT_$2238",
                              "typeString": "contract IFeswaNFT"
                            }
                          },
                          "id": 2320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getPoolInfo",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 2237,
                          "src": "1924:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_uint256_$returns$_t_address_$_t_struct$_FeswaPair_$2221_memory_ptr_$",
                            "typeString": "function (uint256) view external returns (address,struct FeswaPair memory)"
                          }
                        },
                        "id": 2322,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1924:40:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_struct$_FeswaPair_$2221_memory_ptr_$",
                          "typeString": "tuple(address,struct FeswaPair memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1874:90:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2328,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2325,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1983:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2326,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1983:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2327,
                              "name": "nftOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2314,
                              "src": "1997:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "1983:22:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a204e4f5420544f4b454e204f574e4552",
                            "id": 2329,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2007:25:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_af88bfd92975346e3a5760f5cdec35143270ab5159d8ad651447abda31bee50b",
                              "typeString": "literal_string \"FeSwap: NOT TOKEN OWNER\""
                            },
                            "value": "FeSwap: NOT TOKEN OWNER"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_af88bfd92975346e3a5760f5cdec35143270ab5159d8ad651447abda31bee50b",
                              "typeString": "literal_string \"FeSwap: NOT TOKEN OWNER\""
                            }
                          ],
                          "id": 2324,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1975:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2330,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1975:58:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2331,
                      "nodeType": "ExpressionStatement",
                      "src": "1975:58:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_enum$_PoolRunningPhase_$2208",
                              "typeString": "enum PoolRunningPhase"
                            },
                            "id": 2337,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2333,
                                "name": "NftBidInfo",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2316,
                                "src": "2052:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_FeswaPair_$2221_memory_ptr",
                                  "typeString": "struct FeswaPair memory"
                                }
                              },
                              "id": 2334,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "poolState",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 2220,
                              "src": "2052:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_PoolRunningPhase_$2208",
                                "typeString": "enum PoolRunningPhase"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2335,
                                "name": "PoolRunningPhase",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2208,
                                "src": "2076:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_enum$_PoolRunningPhase_$2208_$",
                                  "typeString": "type(enum PoolRunningPhase)"
                                }
                              },
                              "id": 2336,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "BidSettled",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2076:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_enum$_PoolRunningPhase_$2208",
                                "typeString": "enum PoolRunningPhase"
                              }
                            },
                            "src": "2052:51:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a204e4f5420414c4c4f574544",
                            "id": 2338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2105:21:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_23cb2ce109a0f26e5f6ecea48949dda3afb3187c2faf95f388fdab53e22fb05f",
                              "typeString": "literal_string \"FeSwap: NOT ALLOWED\""
                            },
                            "value": "FeSwap: NOT ALLOWED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_23cb2ce109a0f26e5f6ecea48949dda3afb3187c2faf95f388fdab53e22fb05f",
                              "typeString": "literal_string \"FeSwap: NOT ALLOWED\""
                            }
                          ],
                          "id": 2332,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2044:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2339,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2044:83:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2340,
                      "nodeType": "ExpressionStatement",
                      "src": "2044:83:3"
                    },
                    {
                      "assignments": [
                        2342,
                        2344
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2342,
                          "mutability": "mutable",
                          "name": "tokenA",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2365,
                          "src": "2139:14:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2341,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2139:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2344,
                          "mutability": "mutable",
                          "name": "tokenB",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2365,
                          "src": "2155:14:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 2343,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "2155:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 2350,
                      "initialValue": {
                        "argumentTypes": null,
                        "components": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2345,
                              "name": "NftBidInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2316,
                              "src": "2174:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FeswaPair_$2221_memory_ptr",
                                "typeString": "struct FeswaPair memory"
                              }
                            },
                            "id": 2346,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokenA",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2210,
                            "src": "2174:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 2347,
                              "name": "NftBidInfo",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2316,
                              "src": "2193:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_FeswaPair_$2221_memory_ptr",
                                "typeString": "struct FeswaPair memory"
                              }
                            },
                            "id": 2348,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "tokenB",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 2212,
                            "src": "2193:17:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "id": 2349,
                        "isConstant": false,
                        "isInlineArray": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "TupleExpression",
                        "src": "2173:38:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                          "typeString": "tuple(address,address)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2138:73:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2351,
                              "name": "pairAAB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2309,
                              "src": "2223:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2352,
                              "name": "pairABB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2311,
                              "src": "2232:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "id": 2353,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "2222:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2358,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2342,
                              "src": "2284:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2359,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2344,
                              "src": "2292:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2360,
                              "name": "pairOwner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2303,
                              "src": "2300:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2361,
                              "name": "rateTrigger",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2305,
                              "src": "2311:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2355,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2246,
                                  "src": "2258:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2354,
                                "name": "IFeSwapFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4789,
                                "src": "2243:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IFeSwapFactory_$4789_$",
                                  "typeString": "type(contract IFeSwapFactory)"
                                }
                              },
                              "id": 2356,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2243:23:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IFeSwapFactory_$4789",
                                "typeString": "contract IFeSwapFactory"
                              }
                            },
                            "id": 2357,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "createUpdatePair",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4753,
                            "src": "2243:40:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$_t_address_$_t_address_$",
                              "typeString": "function (address,address,address,uint256) external returns (address,address)"
                            }
                          },
                          "id": 2362,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2243:80:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                            "typeString": "tuple(address,address)"
                          }
                        },
                        "src": "2222:101:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2364,
                      "nodeType": "ExpressionStatement",
                      "src": "2222:101:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "6a055fa9",
                "id": 2366,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "ManageFeswaPair",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2307,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "1787:8:3"
                },
                "parameters": {
                  "id": 2306,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2301,
                      "mutability": "mutable",
                      "name": "tokenID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2366,
                      "src": "1694:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2300,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1694:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2303,
                      "mutability": "mutable",
                      "name": "pairOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2366,
                      "src": "1711:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2302,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1711:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2305,
                      "mutability": "mutable",
                      "name": "rateTrigger",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2366,
                      "src": "1730:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2304,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "1730:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1692:59:3"
                },
                "returnParameters": {
                  "id": 2312,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2309,
                      "mutability": "mutable",
                      "name": "pairAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2366,
                      "src": "1823:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2308,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1823:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2311,
                      "mutability": "mutable",
                      "name": "pairABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2366,
                      "src": "1840:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2310,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1840:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1822:34:3"
                },
                "scope": 4452,
                "src": "1668:664:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 2477,
                  "nodeType": "Block",
                  "src": "2603:882:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 2391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 2383,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2381,
                          "src": "2614:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 2388,
                              "name": "tokenIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2368,
                              "src": "2653:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2389,
                              "name": "tokenOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2370,
                              "src": "2662:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2385,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2246,
                                  "src": "2636:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 2384,
                                "name": "IFeSwapFactory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4789,
                                "src": "2621:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IFeSwapFactory_$4789_$",
                                  "typeString": "type(contract IFeSwapFactory)"
                                }
                              },
                              "id": 2386,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2621:23:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IFeSwapFactory_$4789",
                                "typeString": "contract IFeSwapFactory"
                              }
                            },
                            "id": 2387,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getPair",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4726,
                            "src": "2621:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address) view external returns (address)"
                            }
                          },
                          "id": 2390,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2621:50:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "2614:57:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 2392,
                      "nodeType": "ExpressionStatement",
                      "src": "2614:57:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 2399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2394,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2381,
                              "src": "2690:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 2397,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2706:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  }
                                ],
                                "id": 2396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "2698:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 2395,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2698:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 2398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2698:10:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "src": "2690:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a204e4f542043524541544544",
                            "id": 2400,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2710:21:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_edb8a8059078923cc5cdbbec8a748485ea9fe7086ef9b41badd3590fc18889e4",
                              "typeString": "literal_string \"FeSwap: NOT CREATED\""
                            },
                            "value": "FeSwap: NOT CREATED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_edb8a8059078923cc5cdbbec8a748485ea9fe7086ef9b41badd3590fc18889e4",
                              "typeString": "literal_string \"FeSwap: NOT CREATED\""
                            }
                          ],
                          "id": 2393,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2682:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2401,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2682:50:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2402,
                      "nodeType": "ExpressionStatement",
                      "src": "2682:50:3"
                    },
                    {
                      "assignments": [
                        2404,
                        2406,
                        null,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 2404,
                          "mutability": "mutable",
                          "name": "reserveIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2477,
                          "src": "2744:14:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2403,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2744:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 2406,
                          "mutability": "mutable",
                          "name": "reserveOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 2477,
                          "src": "2760:15:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 2405,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2760:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null,
                        null
                      ],
                      "id": 2412,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 2408,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2381,
                                "src": "2794:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 2407,
                              "name": "IFeSwapPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4947,
                              "src": "2782:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                "typeString": "type(contract IFeSwapPair)"
                              }
                            },
                            "id": 2409,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2782:17:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                              "typeString": "contract IFeSwapPair"
                            }
                          },
                          "id": 2410,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4866,
                          "src": "2782:29:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                            "typeString": "function () view external returns (uint112,uint112,uint32,uint256)"
                          }
                        },
                        "id": 2411,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2782:31:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                          "typeString": "tuple(uint112,uint112,uint32,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2743:70:3"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 2419,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2415,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2413,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2404,
                            "src": "2828:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2414,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2841:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2828:14:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 2418,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 2416,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2406,
                            "src": "2846:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 2417,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2860:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "2846:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "2828:33:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 2475,
                        "nodeType": "Block",
                        "src": "2955:523:3",
                        "statements": [
                          {
                            "assignments": [
                              2430
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2430,
                                "mutability": "mutable",
                                "name": "amountOutOptimal",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2475,
                                "src": "2970:21:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2429,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2970:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2437,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2433,
                                  "name": "amountInDesired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2372,
                                  "src": "3014:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2434,
                                  "name": "reserveIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2404,
                                  "src": "3031:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2435,
                                  "name": "reserveOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2406,
                                  "src": "3042:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2431,
                                  "name": "FeSwapLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6210,
                                  "src": "2994:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                    "typeString": "type(library FeSwapLibrary)"
                                  }
                                },
                                "id": 2432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "quote",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5598,
                                "src": "2994:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                  "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 2436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2994:59:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2970:83:3"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2440,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 2438,
                                "name": "amountOutOptimal",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2430,
                                "src": "3072:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2439,
                                "name": "amountOutDesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2374,
                                "src": "3092:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3072:36:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 2473,
                              "nodeType": "Block",
                              "src": "3210:257:3",
                              "statements": [
                                {
                                  "assignments": [
                                    2451
                                  ],
                                  "declarations": [
                                    {
                                      "constant": false,
                                      "id": 2451,
                                      "mutability": "mutable",
                                      "name": "amountInOptimal",
                                      "nodeType": "VariableDeclaration",
                                      "overrides": null,
                                      "scope": 2473,
                                      "src": "3229:20:3",
                                      "stateVariable": false,
                                      "storageLocation": "default",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "typeName": {
                                        "id": 2450,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3229:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "value": null,
                                      "visibility": "internal"
                                    }
                                  ],
                                  "id": 2458,
                                  "initialValue": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2454,
                                        "name": "amountOutDesired",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2374,
                                        "src": "3272:16:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2455,
                                        "name": "reserveOut",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2406,
                                        "src": "3290:10:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 2456,
                                        "name": "reserveIn",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2404,
                                        "src": "3302:9:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2452,
                                        "name": "FeSwapLibrary",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6210,
                                        "src": "3252:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                          "typeString": "type(library FeSwapLibrary)"
                                        }
                                      },
                                      "id": 2453,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "quote",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 5598,
                                      "src": "3252:19:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 2457,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3252:60:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "VariableDeclarationStatement",
                                  "src": "3229:83:3"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 2462,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 2460,
                                          "name": "amountInOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2451,
                                          "src": "3338:15:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "<=",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 2461,
                                          "name": "amountInDesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2372,
                                          "src": "3357:15:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "3338:34:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bool",
                                          "typeString": "bool"
                                        }
                                      ],
                                      "id": 2459,
                                      "name": "assert",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -3,
                                      "src": "3331:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                        "typeString": "function (bool) pure"
                                      }
                                    },
                                    "id": 2463,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3331:42:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 2464,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3331:42:3"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2471,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2465,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2377,
                                          "src": "3393:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2466,
                                          "name": "amountOut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2379,
                                          "src": "3403:9:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 2467,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "3392:21:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2468,
                                          "name": "amountInOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2451,
                                          "src": "3417:15:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2469,
                                          "name": "amountOutDesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2374,
                                          "src": "3434:16:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 2470,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "3416:35:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "3392:59:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 2472,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3392:59:3"
                                }
                              ]
                            },
                            "id": 2474,
                            "nodeType": "IfStatement",
                            "src": "3068:399:3",
                            "trueBody": {
                              "id": 2449,
                              "nodeType": "Block",
                              "src": "3110:94:3",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2447,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2441,
                                          "name": "amountIn",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2377,
                                          "src": "3130:8:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2442,
                                          "name": "amountOut",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2379,
                                          "src": "3140:9:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 2443,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "nodeType": "TupleExpression",
                                      "src": "3129:21:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2444,
                                          "name": "amountInDesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2372,
                                          "src": "3154:15:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 2445,
                                          "name": "amountOutOptimal",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2430,
                                          "src": "3171:16:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 2446,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "3153:35:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                        "typeString": "tuple(uint256,uint256)"
                                      }
                                    },
                                    "src": "3129:59:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_tuple$__$",
                                      "typeString": "tuple()"
                                    }
                                  },
                                  "id": 2448,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3129:59:3"
                                }
                              ]
                            }
                          }
                        ]
                      },
                      "id": 2476,
                      "nodeType": "IfStatement",
                      "src": "2824:654:3",
                      "trueBody": {
                        "id": 2428,
                        "nodeType": "Block",
                        "src": "2863:86:3",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2426,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2420,
                                    "name": "amountIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2377,
                                    "src": "2879:8:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2421,
                                    "name": "amountOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2379,
                                    "src": "2889:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2422,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "2878:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2423,
                                    "name": "amountInDesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2372,
                                    "src": "2903:15:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2424,
                                    "name": "amountOutDesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2374,
                                    "src": "2920:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2425,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2902:35:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "src": "2878:59:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2427,
                            "nodeType": "ExpressionStatement",
                            "src": "2878:59:3"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 2478,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_addLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 2375,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2368,
                      "mutability": "mutable",
                      "name": "tokenIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2478,
                      "src": "2396:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2367,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2396:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2370,
                      "mutability": "mutable",
                      "name": "tokenOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2478,
                      "src": "2413:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2369,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2413:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2372,
                      "mutability": "mutable",
                      "name": "amountInDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2478,
                      "src": "2431:20:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2371,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2431:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2374,
                      "mutability": "mutable",
                      "name": "amountOutDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2478,
                      "src": "2453:21:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2373,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2453:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2394:82:3"
                },
                "returnParameters": {
                  "id": 2382,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2377,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2478,
                      "src": "2552:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2376,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2552:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2379,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2478,
                      "src": "2567:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2378,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2567:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2381,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2478,
                      "src": "2583:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2380,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2583:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2551:45:3"
                },
                "scope": 4452,
                "src": "2372:1113:3",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "baseFunctions": [
                  5003
                ],
                "body": {
                  "id": 2648,
                  "nodeType": "Block",
                  "src": "3849:1310:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2510,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2508,
                              "name": "ratio",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2488,
                              "src": "3868:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313030",
                              "id": 2509,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3877:3:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              },
                              "value": "100"
                            },
                            "src": "3868:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20524154494f20454552",
                            "id": 2511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3883:19:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b701cacc3b07a71ac4c5a1d110d20d15848ef164f9ec6567426e8682a47f61f2",
                              "typeString": "literal_string \"FeSwap: RATIO EER\""
                            },
                            "value": "FeSwap: RATIO EER"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b701cacc3b07a71ac4c5a1d110d20d15848ef164f9ec6567426e8682a47f61f2",
                              "typeString": "literal_string \"FeSwap: RATIO EER\""
                            }
                          ],
                          "id": 2507,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3860:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2512,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3860:43:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2513,
                      "nodeType": "ExpressionStatement",
                      "src": "3860:43:3"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2514,
                          "name": "ratio",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2488,
                          "src": "3917:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3931:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2516,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "3926:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2515,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "3926:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3926:7:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3917:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2583,
                      "nodeType": "IfStatement",
                      "src": "3914:595:3",
                      "trueBody": {
                        "id": 2582,
                        "nodeType": "Block",
                        "src": "3935:574:3",
                        "statements": [
                          {
                            "assignments": [
                              2521
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2521,
                                "mutability": "mutable",
                                "name": "pairA2B",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2582,
                                "src": "4034:15:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2520,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4034:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2522,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4034:15:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2530,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2523,
                                "name": "liquidityAAB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2503,
                                "src": "4064:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2529,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2526,
                                      "name": "ratio",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2488,
                                      "src": "4098:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2524,
                                      "name": "amountADesired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2484,
                                      "src": "4079:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2525,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6708,
                                    "src": "4079:18:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2527,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4079:25:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "313030",
                                  "id": 2528,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4105:3:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  },
                                  "value": "100"
                                },
                                "src": "4079:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4064:44:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2531,
                            "nodeType": "ExpressionStatement",
                            "src": "4064:44:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2539,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2532,
                                "name": "liquidityABB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2505,
                                "src": "4124:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 2538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2535,
                                      "name": "ratio",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2488,
                                      "src": "4158:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 2533,
                                      "name": "amountBDesired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2486,
                                      "src": "4139:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 2534,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6708,
                                    "src": "4139:18:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 2536,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4139:25:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "313030",
                                  "id": 2537,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4165:3:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_100_by_1",
                                    "typeString": "int_const 100"
                                  },
                                  "value": "100"
                                },
                                "src": "4139:29:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4124:44:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2540,
                            "nodeType": "ExpressionStatement",
                            "src": "4124:44:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2551,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2541,
                                    "name": "amountA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2499,
                                    "src": "4184:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2542,
                                    "name": "amountB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2501,
                                    "src": "4193:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2543,
                                    "name": "pairA2B",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2521,
                                    "src": "4202:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 2544,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "4183:27:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2546,
                                    "name": "tokenA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2480,
                                    "src": "4227:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2547,
                                    "name": "tokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2482,
                                    "src": "4235:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2548,
                                    "name": "liquidityAAB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2503,
                                    "src": "4243:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2549,
                                    "name": "liquidityABB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2505,
                                    "src": "4257:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2545,
                                  "name": "_addLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2478,
                                  "src": "4213:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                    "typeString": "function (address,address,uint256,uint256) view returns (uint256,uint256,address)"
                                  }
                                },
                                "id": 2550,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4213:57:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "src": "4183:87:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2552,
                            "nodeType": "ExpressionStatement",
                            "src": "4183:87:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2556,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2480,
                                  "src": "4317:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2557,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4325:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2558,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4325:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2559,
                                  "name": "pairA2B",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2521,
                                  "src": "4337:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2560,
                                  "name": "amountA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2499,
                                  "src": "4346:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2553,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6869,
                                  "src": "4285:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 2555,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6843,
                                "src": "4285:31:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,uint256)"
                                }
                              },
                              "id": 2561,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4285:69:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2562,
                            "nodeType": "ExpressionStatement",
                            "src": "4285:69:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2566,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2482,
                                  "src": "4401:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2567,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4409:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2568,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4409:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2569,
                                  "name": "pairA2B",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2521,
                                  "src": "4421:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2570,
                                  "name": "amountB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2501,
                                  "src": "4430:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2563,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6869,
                                  "src": "4369:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 2565,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6843,
                                "src": "4369:31:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,uint256)"
                                }
                              },
                              "id": 2571,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4369:69:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2572,
                            "nodeType": "ExpressionStatement",
                            "src": "4369:69:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2573,
                                "name": "liquidityAAB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2503,
                                "src": "4453:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2578,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2490,
                                    "src": "4494:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2575,
                                        "name": "pairA2B",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2521,
                                        "src": "4480:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2574,
                                      "name": "IFeSwapPair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4947,
                                      "src": "4468:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                        "typeString": "type(contract IFeSwapPair)"
                                      }
                                    },
                                    "id": 2576,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "4468:20:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                      "typeString": "contract IFeSwapPair"
                                    }
                                  },
                                  "id": 2577,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4893,
                                  "src": "4468:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) external returns (uint256)"
                                  }
                                },
                                "id": 2579,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4468:29:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4453:44:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2581,
                            "nodeType": "ExpressionStatement",
                            "src": "4453:44:3"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2589,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2584,
                          "name": "ratio",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2488,
                          "src": "4522:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "313030",
                              "id": 2587,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4536:3:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              },
                              "value": "100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              }
                            ],
                            "id": 2586,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4531:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2585,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "4531:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2588,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4531:9:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4522:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2647,
                      "nodeType": "IfStatement",
                      "src": "4519:633:3",
                      "trueBody": {
                        "id": 2646,
                        "nodeType": "Block",
                        "src": "4542:610:3",
                        "statements": [
                          {
                            "assignments": [
                              2591
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2591,
                                "mutability": "mutable",
                                "name": "pairB2A",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2646,
                                "src": "4645:15:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2590,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4645:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2592,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4645:15:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2607,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2593,
                                    "name": "amountBDesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2486,
                                    "src": "4677:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2594,
                                    "name": "amountADesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2484,
                                    "src": "4693:14:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2595,
                                    "name": "pairB2A",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2591,
                                    "src": "4709:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 2596,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "4676:41:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2598,
                                    "name": "tokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2482,
                                    "src": "4756:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2599,
                                    "name": "tokenA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2480,
                                    "src": "4764:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2602,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2600,
                                      "name": "amountBDesired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2486,
                                      "src": "4772:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2601,
                                      "name": "amountB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2501,
                                      "src": "4787:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4772:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2605,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2603,
                                      "name": "amountADesired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2484,
                                      "src": "4796:14:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2604,
                                      "name": "amountA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2499,
                                      "src": "4811:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4796:22:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2597,
                                  "name": "_addLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2478,
                                  "src": "4742:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                    "typeString": "function (address,address,uint256,uint256) view returns (uint256,uint256,address)"
                                  }
                                },
                                "id": 2606,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4742:77:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "src": "4676:143:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2608,
                            "nodeType": "ExpressionStatement",
                            "src": "4676:143:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2612,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2480,
                                  "src": "4866:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2613,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4874:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2614,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4874:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2615,
                                  "name": "pairB2A",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2591,
                                  "src": "4886:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2616,
                                  "name": "amountADesired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2484,
                                  "src": "4895:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2609,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6869,
                                  "src": "4834:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 2611,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6843,
                                "src": "4834:31:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,uint256)"
                                }
                              },
                              "id": 2617,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4834:76:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2618,
                            "nodeType": "ExpressionStatement",
                            "src": "4834:76:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2622,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2482,
                                  "src": "4957:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2623,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "4965:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2624,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "4965:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2625,
                                  "name": "pairB2A",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2591,
                                  "src": "4977:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2626,
                                  "name": "amountBDesired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2486,
                                  "src": "4986:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2619,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6869,
                                  "src": "4925:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 2621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6843,
                                "src": "4925:31:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,uint256)"
                                }
                              },
                              "id": 2627,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4925:76:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2628,
                            "nodeType": "ExpressionStatement",
                            "src": "4925:76:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2636,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2629,
                                "name": "liquidityABB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2505,
                                "src": "5016:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2634,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2490,
                                    "src": "5057:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2631,
                                        "name": "pairB2A",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2591,
                                        "src": "5043:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2630,
                                      "name": "IFeSwapPair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4947,
                                      "src": "5031:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                        "typeString": "type(contract IFeSwapPair)"
                                      }
                                    },
                                    "id": 2632,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5031:20:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                      "typeString": "contract IFeSwapPair"
                                    }
                                  },
                                  "id": 2633,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4893,
                                  "src": "5031:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) external returns (uint256)"
                                  }
                                },
                                "id": 2635,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5031:29:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5016:44:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2637,
                            "nodeType": "ExpressionStatement",
                            "src": "5016:44:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2640,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2638,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2499,
                                "src": "5075:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2639,
                                "name": "amountADesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2484,
                                "src": "5086:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5075:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2641,
                            "nodeType": "ExpressionStatement",
                            "src": "5075:25:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2644,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2642,
                                "name": "amountB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2501,
                                "src": "5115:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2643,
                                "name": "amountBDesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2486,
                                "src": "5126:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5115:25:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2645,
                            "nodeType": "ExpressionStatement",
                            "src": "5115:25:3"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ba9f20b8",
                "id": 2649,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2496,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2492,
                        "src": "3741:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2497,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2495,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "3734:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "3734:16:3"
                  }
                ],
                "name": "addLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2494,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "3725:8:3"
                },
                "parameters": {
                  "id": 2493,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2480,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3517:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2479,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3517:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2482,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3533:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2481,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3533:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2484,
                      "mutability": "mutable",
                      "name": "amountADesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3579:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2483,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3579:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2486,
                      "mutability": "mutable",
                      "name": "amountBDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3600:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2485,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3600:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2488,
                      "mutability": "mutable",
                      "name": "ratio",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3650:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2487,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3650:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2490,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3662:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2489,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3662:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2492,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3674:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2491,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3674:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3514:175:3"
                },
                "returnParameters": {
                  "id": 2506,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2499,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3778:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2498,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3778:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2501,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3792:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2500,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3792:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2503,
                      "mutability": "mutable",
                      "name": "liquidityAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3806:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2502,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3806:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2505,
                      "mutability": "mutable",
                      "name": "liquidityABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2649,
                      "src": "3825:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2504,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3825:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3777:66:3"
                },
                "scope": 4452,
                "src": "3493:1666:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5024
                ],
                "body": {
                  "id": 2844,
                  "nodeType": "Block",
                  "src": "5449:1445:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2677,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2675,
                              "name": "ratio",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2655,
                              "src": "5468:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "313030",
                              "id": 2676,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5477:3:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              },
                              "value": "100"
                            },
                            "src": "5468:12:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761703a20524154494f20454552",
                            "id": 2678,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5483:19:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b701cacc3b07a71ac4c5a1d110d20d15848ef164f9ec6567426e8682a47f61f2",
                              "typeString": "literal_string \"FeSwap: RATIO EER\""
                            },
                            "value": "FeSwap: RATIO EER"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b701cacc3b07a71ac4c5a1d110d20d15848ef164f9ec6567426e8682a47f61f2",
                              "typeString": "literal_string \"FeSwap: RATIO EER\""
                            }
                          ],
                          "id": 2674,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5460:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2679,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5460:43:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2680,
                      "nodeType": "ExpressionStatement",
                      "src": "5460:43:3"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2686,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2681,
                          "name": "ratio",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2655,
                          "src": "5517:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2684,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5531:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2683,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "5526:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2682,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5526:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2685,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5526:7:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5517:16:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2751,
                      "nodeType": "IfStatement",
                      "src": "5514:493:3",
                      "trueBody": {
                        "id": 2750,
                        "nodeType": "Block",
                        "src": "5535:472:3",
                        "statements": [
                          {
                            "assignments": [
                              2688
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2688,
                                "mutability": "mutable",
                                "name": "pairTTE",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2750,
                                "src": "5558:15:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2687,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5558:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2689,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "5558:15:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2711,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2690,
                                    "name": "amountToken",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2666,
                                    "src": "5589:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2691,
                                    "name": "amountETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2668,
                                    "src": "5602:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2692,
                                    "name": "pairTTE",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2688,
                                    "src": "5613:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 2693,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "5588:33:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2695,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2651,
                                    "src": "5659:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2696,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2252,
                                    "src": "5666:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2702,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2699,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2655,
                                          "src": "5695:5:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 2697,
                                          "name": "amountTokenDesired",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2653,
                                          "src": "5672:18:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2698,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6708,
                                        "src": "5672:22:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2700,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5672:29:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "313030",
                                      "id": 2701,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5702:3:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100_by_1",
                                        "typeString": "int_const 100"
                                      },
                                      "value": "100"
                                    },
                                    "src": "5672:33:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2709,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2706,
                                          "name": "ratio",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2655,
                                          "src": "5721:5:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 2703,
                                            "name": "msg",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -15,
                                            "src": "5707:3:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_magic_message",
                                              "typeString": "msg"
                                            }
                                          },
                                          "id": 2704,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "value",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": null,
                                          "src": "5707:9:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 2705,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "mul",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6708,
                                        "src": "5707:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 2707,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5707:20:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "/",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "313030",
                                      "id": 2708,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5728:3:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_100_by_1",
                                        "typeString": "int_const 100"
                                      },
                                      "value": "100"
                                    },
                                    "src": "5707:24:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2694,
                                  "name": "_addLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2478,
                                  "src": "5645:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                    "typeString": "function (address,address,uint256,uint256) view returns (uint256,uint256,address)"
                                  }
                                },
                                "id": 2710,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5645:87:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "src": "5588:144:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2712,
                            "nodeType": "ExpressionStatement",
                            "src": "5588:144:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2716,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2651,
                                  "src": "5779:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2717,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "5786:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2718,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "5786:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2719,
                                  "name": "pairTTE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2688,
                                  "src": "5798:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2720,
                                  "name": "amountToken",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2666,
                                  "src": "5807:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2713,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6869,
                                  "src": "5747:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 2715,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6843,
                                "src": "5747:31:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,uint256)"
                                }
                              },
                              "id": 2721,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5747:72:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2722,
                            "nodeType": "ExpressionStatement",
                            "src": "5747:72:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2724,
                                        "name": "WETH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2252,
                                        "src": "5840:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2723,
                                      "name": "IWETH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5420,
                                      "src": "5834:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                        "typeString": "type(contract IWETH)"
                                      }
                                    },
                                    "id": 2725,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5834:11:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWETH_$5420",
                                      "typeString": "contract IWETH"
                                    }
                                  },
                                  "id": 2726,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deposit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5405,
                                  "src": "5834:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                    "typeString": "function () payable external"
                                  }
                                },
                                "id": 2728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "names": [
                                  "value"
                                ],
                                "nodeType": "FunctionCallOptions",
                                "options": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2727,
                                    "name": "amountETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2668,
                                    "src": "5861:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "src": "5834:37:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                  "typeString": "function () payable external"
                                }
                              },
                              "id": 2729,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5834:39:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2730,
                            "nodeType": "ExpressionStatement",
                            "src": "5834:39:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2736,
                                      "name": "pairTTE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2688,
                                      "src": "5916:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 2737,
                                      "name": "amountETH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2668,
                                      "src": "5925:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2733,
                                          "name": "WETH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2252,
                                          "src": "5901:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 2732,
                                        "name": "IWETH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5420,
                                        "src": "5895:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                          "typeString": "type(contract IWETH)"
                                        }
                                      },
                                      "id": 2734,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "5895:11:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWETH_$5420",
                                        "typeString": "contract IWETH"
                                      }
                                    },
                                    "id": 2735,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5414,
                                    "src": "5895:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 2738,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5895:40:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "id": 2731,
                                "name": "assert",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -3,
                                "src": "5888:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                  "typeString": "function (bool) pure"
                                }
                              },
                              "id": 2739,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5888:48:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2740,
                            "nodeType": "ExpressionStatement",
                            "src": "5888:48:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2748,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2741,
                                "name": "liquidityTTE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2670,
                                "src": "5951:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2746,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2657,
                                    "src": "5992:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2743,
                                        "name": "pairTTE",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2688,
                                        "src": "5978:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2742,
                                      "name": "IFeSwapPair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4947,
                                      "src": "5966:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                        "typeString": "type(contract IFeSwapPair)"
                                      }
                                    },
                                    "id": 2744,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "5966:20:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                      "typeString": "contract IFeSwapPair"
                                    }
                                  },
                                  "id": 2745,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4893,
                                  "src": "5966:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) external returns (uint256)"
                                  }
                                },
                                "id": 2747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5966:29:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5951:44:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2749,
                            "nodeType": "ExpressionStatement",
                            "src": "5951:44:3"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2757,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2752,
                          "name": "ratio",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2655,
                          "src": "6020:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "313030",
                              "id": 2755,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6034:3:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              },
                              "value": "100"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_100_by_1",
                                "typeString": "int_const 100"
                              }
                            ],
                            "id": 2754,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "6029:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2753,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6029:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2756,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6029:9:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6020:18:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2827,
                      "nodeType": "IfStatement",
                      "src": "6017:729:3",
                      "trueBody": {
                        "id": 2826,
                        "nodeType": "Block",
                        "src": "6039:707:3",
                        "statements": [
                          {
                            "assignments": [
                              2759
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2759,
                                "mutability": "mutable",
                                "name": "pairTEE",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2826,
                                "src": "6054:15:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2758,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6054:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2760,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6054:15:3"
                          },
                          {
                            "assignments": [
                              2762
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2762,
                                "mutability": "mutable",
                                "name": "amountETHDesired",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2826,
                                "src": "6084:21:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2761,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6084:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2763,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6084:21:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2779,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2764,
                                    "name": "amountETHDesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2762,
                                    "src": "6195:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2765,
                                    "name": "amountTokenDesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2653,
                                    "src": "6213:18:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2766,
                                    "name": "pairTEE",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2759,
                                    "src": "6233:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 2767,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "6194:47:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2769,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2252,
                                    "src": "6280:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2770,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2651,
                                    "src": "6286:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2774,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 2771,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "6293:3:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 2772,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "value",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "6293:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2773,
                                      "name": "amountETH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2668,
                                      "src": "6303:9:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6293:19:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 2777,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 2775,
                                      "name": "amountTokenDesired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2653,
                                      "src": "6315:18:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 2776,
                                      "name": "amountToken",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2666,
                                      "src": "6334:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6315:30:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 2768,
                                  "name": "_addLiquidity",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2478,
                                  "src": "6266:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_uint256_$_t_uint256_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                    "typeString": "function (address,address,uint256,uint256) view returns (uint256,uint256,address)"
                                  }
                                },
                                "id": 2778,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6266:80:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "src": "6194:152:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2780,
                            "nodeType": "ExpressionStatement",
                            "src": "6194:152:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2784,
                                  "name": "token",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2651,
                                  "src": "6393:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2785,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "6400:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2786,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "6400:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2787,
                                  "name": "pairTEE",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2759,
                                  "src": "6412:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2788,
                                  "name": "amountTokenDesired",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2653,
                                  "src": "6421:18:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2781,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6869,
                                  "src": "6361:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 2783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6843,
                                "src": "6361:31:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,uint256)"
                                }
                              },
                              "id": 2789,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6361:79:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2790,
                            "nodeType": "ExpressionStatement",
                            "src": "6361:79:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": [],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2792,
                                        "name": "WETH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2252,
                                        "src": "6461:4:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2791,
                                      "name": "IWETH",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5420,
                                      "src": "6455:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                        "typeString": "type(contract IWETH)"
                                      }
                                    },
                                    "id": 2793,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6455:11:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IWETH_$5420",
                                      "typeString": "contract IWETH"
                                    }
                                  },
                                  "id": 2794,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "deposit",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5405,
                                  "src": "6455:19:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$__$returns$__$",
                                    "typeString": "function () payable external"
                                  }
                                },
                                "id": 2796,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "names": [
                                  "value"
                                ],
                                "nodeType": "FunctionCallOptions",
                                "options": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2795,
                                    "name": "amountETHDesired",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2762,
                                    "src": "6482:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "src": "6455:44:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                                  "typeString": "function () payable external"
                                }
                              },
                              "id": 2797,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6455:46:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2798,
                            "nodeType": "ExpressionStatement",
                            "src": "6455:46:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2804,
                                      "name": "pairTEE",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2759,
                                      "src": "6544:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 2805,
                                      "name": "amountETHDesired",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2762,
                                      "src": "6553:16:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 2801,
                                          "name": "WETH",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2252,
                                          "src": "6529:4:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 2800,
                                        "name": "IWETH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 5420,
                                        "src": "6523:5:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                          "typeString": "type(contract IWETH)"
                                        }
                                      },
                                      "id": 2802,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "6523:11:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IWETH_$5420",
                                        "typeString": "contract IWETH"
                                      }
                                    },
                                    "id": 2803,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "transfer",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5414,
                                    "src": "6523:20:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                      "typeString": "function (address,uint256) external returns (bool)"
                                    }
                                  },
                                  "id": 2806,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "6523:47:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                ],
                                "id": 2799,
                                "name": "assert",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -3,
                                "src": "6516:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                                  "typeString": "function (bool) pure"
                                }
                              },
                              "id": 2807,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6516:55:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2808,
                            "nodeType": "ExpressionStatement",
                            "src": "6516:55:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2809,
                                "name": "liquidityTEE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2672,
                                "src": "6586:12:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2814,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2657,
                                    "src": "6627:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2811,
                                        "name": "pairTEE",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2759,
                                        "src": "6613:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2810,
                                      "name": "IFeSwapPair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4947,
                                      "src": "6601:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                        "typeString": "type(contract IFeSwapPair)"
                                      }
                                    },
                                    "id": 2812,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "6601:20:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                      "typeString": "contract IFeSwapPair"
                                    }
                                  },
                                  "id": 2813,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "mint",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4893,
                                  "src": "6601:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$",
                                    "typeString": "function (address) external returns (uint256)"
                                  }
                                },
                                "id": 2815,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6601:29:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6586:44:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2817,
                            "nodeType": "ExpressionStatement",
                            "src": "6586:44:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2820,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2818,
                                "name": "amountToken",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2666,
                                "src": "6650:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2819,
                                "name": "amountTokenDesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2653,
                                "src": "6665:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6650:33:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2821,
                            "nodeType": "ExpressionStatement",
                            "src": "6650:33:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2824,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2822,
                                "name": "amountETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2668,
                                "src": "6698:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2823,
                                "name": "amountETHDesired",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2762,
                                "src": "6711:16:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6698:29:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2825,
                            "nodeType": "ExpressionStatement",
                            "src": "6698:29:3"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2831,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 2828,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "6798:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 2829,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "6798:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 2830,
                          "name": "amountETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2668,
                          "src": "6810:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6798:21:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2843,
                      "nodeType": "IfStatement",
                      "src": "6794:92:3",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 2835,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "6852:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 2836,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6852:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 2840,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2837,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "6864:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 2838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "6864:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 2839,
                                "name": "amountETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2668,
                                "src": "6876:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6864:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 2832,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6869,
                              "src": "6821:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 2834,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6868,
                            "src": "6821:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 2841,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6821:65:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 2842,
                        "nodeType": "ExpressionStatement",
                        "src": "6821:65:3"
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ffbcf7f3",
                "id": 2845,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2663,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2659,
                        "src": "5334:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2664,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2662,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "5327:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "5327:16:3"
                  }
                ],
                "name": "addLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2661,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "5310:8:3"
                },
                "parameters": {
                  "id": 2660,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2651,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2845,
                      "src": "5195:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2650,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5195:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2653,
                      "mutability": "mutable",
                      "name": "amountTokenDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2845,
                      "src": "5210:23:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2652,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5210:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2655,
                      "mutability": "mutable",
                      "name": "ratio",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2845,
                      "src": "5235:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2654,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5235:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2657,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2845,
                      "src": "5247:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2656,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5247:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2659,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2845,
                      "src": "5259:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2658,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5259:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5191:83:3"
                },
                "returnParameters": {
                  "id": 2673,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2666,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2845,
                      "src": "5371:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2665,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5371:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2668,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2845,
                      "src": "5389:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2667,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5389:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2670,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2845,
                      "src": "5405:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2669,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5405:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2672,
                      "mutability": "mutable",
                      "name": "liquidityTEE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2845,
                      "src": "5424:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2671,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5424:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5370:72:3"
                },
                "scope": 4452,
                "src": "5167:1727:3",
                "stateMutability": "payable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5047
                ],
                "body": {
                  "id": 2970,
                  "nodeType": "Block",
                  "src": "7258:854:3",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2877,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2872,
                          "name": "liquidityAAB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2851,
                          "src": "7272:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2875,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7293:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2874,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7288:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2873,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7288:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2876,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7288:7:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7272:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2909,
                      "nodeType": "IfStatement",
                      "src": "7269:293:3",
                      "trueBody": {
                        "id": 2908,
                        "nodeType": "Block",
                        "src": "7297:265:3",
                        "statements": [
                          {
                            "assignments": [
                              2879
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2879,
                                "mutability": "mutable",
                                "name": "pairAAB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2908,
                                "src": "7312:15:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2878,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7312:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2886,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2882,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2246,
                                  "src": "7352:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2883,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "7361:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2884,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2849,
                                  "src": "7369:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2880,
                                  "name": "FeSwapLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6210,
                                  "src": "7330:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                    "typeString": "type(library FeSwapLibrary)"
                                  }
                                },
                                "id": 2881,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairFor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5522,
                                "src": "7330:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address,address) pure returns (address)"
                                }
                              },
                              "id": 2885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7330:46:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7312:64:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2891,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "7425:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2892,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7425:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2893,
                                  "name": "pairAAB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2879,
                                  "src": "7437:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2894,
                                  "name": "liquidityAAB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2851,
                                  "src": "7446:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2888,
                                      "name": "pairAAB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2879,
                                      "src": "7403:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2887,
                                    "name": "IFeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4947,
                                    "src": "7391:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                      "typeString": "type(contract IFeSwapPair)"
                                    }
                                  },
                                  "id": 2889,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7391:20:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 2890,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4631,
                                "src": "7391:33:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 2895,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7391:68:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 2896,
                            "nodeType": "ExpressionStatement",
                            "src": "7391:68:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2906,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2897,
                                    "name": "amountA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2868,
                                    "src": "7501:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 2898,
                                    "name": "amountB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2870,
                                    "src": "7510:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 2899,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "7500:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 2904,
                                    "name": "to",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2859,
                                    "src": "7547:2:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 2901,
                                        "name": "pairAAB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 2879,
                                        "src": "7533:7:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 2900,
                                      "name": "IFeSwapPair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4947,
                                      "src": "7521:11:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                        "typeString": "type(contract IFeSwapPair)"
                                      }
                                    },
                                    "id": 2902,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "7521:20:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                      "typeString": "contract IFeSwapPair"
                                    }
                                  },
                                  "id": 2903,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "burn",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 4902,
                                  "src": "7521:25:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                    "typeString": "function (address) external returns (uint256,uint256)"
                                  }
                                },
                                "id": 2905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7521:29:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256)"
                                }
                              },
                              "src": "7500:50:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 2907,
                            "nodeType": "ExpressionStatement",
                            "src": "7500:50:3"
                          }
                        ]
                      }
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 2915,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 2910,
                          "name": "liquidityABB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 2853,
                          "src": "7575:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 2913,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "7596:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              }
                            ],
                            "id": 2912,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "7591:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 2911,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "7591:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 2914,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7591:7:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7575:23:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 2955,
                      "nodeType": "IfStatement",
                      "src": "7572:373:3",
                      "trueBody": {
                        "id": 2954,
                        "nodeType": "Block",
                        "src": "7600:345:3",
                        "statements": [
                          {
                            "assignments": [
                              2917
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2917,
                                "mutability": "mutable",
                                "name": "pairABB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2954,
                                "src": "7615:15:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 2916,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7615:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2924,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2920,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2246,
                                  "src": "7655:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2921,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2849,
                                  "src": "7664:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2922,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2847,
                                  "src": "7672:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 2918,
                                  "name": "FeSwapLibrary",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6210,
                                  "src": "7633:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                    "typeString": "type(library FeSwapLibrary)"
                                  }
                                },
                                "id": 2919,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "pairFor",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5522,
                                "src": "7633:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                  "typeString": "function (address,address,address) pure returns (address)"
                                }
                              },
                              "id": 2923,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7633:46:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7615:64:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 2929,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "7728:3:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 2930,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "7728:10:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2931,
                                  "name": "pairABB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2917,
                                  "src": "7740:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 2932,
                                  "name": "liquidityABB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2853,
                                  "src": "7749:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2926,
                                      "name": "pairABB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2917,
                                      "src": "7706:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2925,
                                    "name": "IFeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4947,
                                    "src": "7694:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                      "typeString": "type(contract IFeSwapPair)"
                                    }
                                  },
                                  "id": 2927,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7694:20:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 2928,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "transferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4631,
                                "src": "7694:33:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                                  "typeString": "function (address,address,uint256) external returns (bool)"
                                }
                              },
                              "id": 2933,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7694:68:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 2934,
                            "nodeType": "ExpressionStatement",
                            "src": "7694:68:3"
                          },
                          {
                            "assignments": [
                              2936,
                              2938
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 2936,
                                "mutability": "mutable",
                                "name": "amountB0",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2954,
                                "src": "7804:13:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2935,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7804:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 2938,
                                "mutability": "mutable",
                                "name": "amountA0",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 2954,
                                "src": "7819:13:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 2937,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7819:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 2945,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 2943,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2859,
                                  "src": "7862:2:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 2940,
                                      "name": "pairABB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2917,
                                      "src": "7848:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 2939,
                                    "name": "IFeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4947,
                                    "src": "7836:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                      "typeString": "type(contract IFeSwapPair)"
                                    }
                                  },
                                  "id": 2941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7836:20:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 2942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "burn",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4902,
                                "src": "7836:25:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_address_$returns$_t_uint256_$_t_uint256_$",
                                  "typeString": "function (address) external returns (uint256,uint256)"
                                }
                              },
                              "id": 2944,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7836:29:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7803:62:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2948,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2946,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2868,
                                "src": "7880:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2947,
                                "name": "amountA0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2938,
                                "src": "7891:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7880:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2949,
                            "nodeType": "ExpressionStatement",
                            "src": "7880:19:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 2952,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 2950,
                                "name": "amountB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2870,
                                "src": "7914:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 2951,
                                "name": "amountB0",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2936,
                                "src": "7925:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7914:19:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 2953,
                            "nodeType": "ExpressionStatement",
                            "src": "7914:19:3"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2959,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2957,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2868,
                              "src": "7963:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2958,
                              "name": "amountAMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2855,
                              "src": "7974:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "7963:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e53554646494349454e545f415f414d4f554e54",
                            "id": 2960,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "7986:37:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_db39eaa8088691d4298f5d77a914749af194ed0cae7f8082bca83e41c347f82d",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_A_AMOUNT\""
                            },
                            "value": "FeSwapRouter: INSUFFICIENT_A_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_db39eaa8088691d4298f5d77a914749af194ed0cae7f8082bca83e41c347f82d",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_A_AMOUNT\""
                            }
                          ],
                          "id": 2956,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "7955:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2961,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "7955:69:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2962,
                      "nodeType": "ExpressionStatement",
                      "src": "7955:69:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 2966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 2964,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2870,
                              "src": "8043:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 2965,
                              "name": "amountBMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2857,
                              "src": "8054:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8043:21:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e53554646494349454e545f425f414d4f554e54",
                            "id": 2967,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8066:37:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_b1e959c07b1946e6709fdb1caf0ee32257147e9dd19f2efb3ae8409ae82288de",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_B_AMOUNT\""
                            },
                            "value": "FeSwapRouter: INSUFFICIENT_B_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_b1e959c07b1946e6709fdb1caf0ee32257147e9dd19f2efb3ae8409ae82288de",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_B_AMOUNT\""
                            }
                          ],
                          "id": 2963,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "8035:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 2968,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8035:69:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 2969,
                      "nodeType": "ExpressionStatement",
                      "src": "8035:69:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "96adb337",
                "id": 2971,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2865,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2861,
                        "src": "7211:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2866,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2864,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "7204:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "7204:16:3"
                  }
                ],
                "name": "removeLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2863,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "7195:8:3"
                },
                "parameters": {
                  "id": 2862,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2847,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "6972:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2846,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6972:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2849,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "6997:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2848,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6997:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2851,
                      "mutability": "mutable",
                      "name": "liquidityAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "7022:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2850,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7022:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2853,
                      "mutability": "mutable",
                      "name": "liquidityABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "7050:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2852,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7050:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2855,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "7086:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2854,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7086:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2857,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "7112:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2856,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7112:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2859,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "7138:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2858,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "7138:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2861,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "7159:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2860,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7159:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6961:218:3"
                },
                "returnParameters": {
                  "id": 2871,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2868,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "7230:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2867,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7230:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2870,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 2971,
                      "src": "7244:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2869,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7244:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7229:28:3"
                },
                "scope": 4452,
                "src": "6937:1175:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5068
                ],
                "body": {
                  "id": 3036,
                  "nodeType": "Block",
                  "src": "8427:432:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3012,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 2996,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2992,
                              "src": "8439:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 2997,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2994,
                              "src": "8452:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 2998,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "8438:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3000,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2973,
                              "src": "8495:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3001,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "8515:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3002,
                              "name": "liquidityTTE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2975,
                              "src": "8534:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3003,
                              "name": "liquidityTEE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2977,
                              "src": "8561:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3004,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2979,
                              "src": "8588:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3005,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2981,
                              "src": "8617:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3008,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "8652:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                    "typeString": "contract FeSwapRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                    "typeString": "contract FeSwapRouter"
                                  }
                                ],
                                "id": 3007,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8644:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3006,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "8644:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3009,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8644:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3010,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2985,
                              "src": "8672:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 2999,
                            "name": "removeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2971,
                            "src": "8465:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3011,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8465:226:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "8438:253:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3013,
                      "nodeType": "ExpressionStatement",
                      "src": "8438:253:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3017,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2973,
                            "src": "8730:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3018,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2983,
                            "src": "8737:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3019,
                            "name": "amountToken",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2992,
                            "src": "8741:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3014,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "8702:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3016,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6797,
                          "src": "8702:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3020,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8702:51:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3021,
                      "nodeType": "ExpressionStatement",
                      "src": "8702:51:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3026,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2994,
                            "src": "8785:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3023,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "8770:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3022,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5420,
                              "src": "8764:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 3024,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8764:11:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$5420",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 3025,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5419,
                          "src": "8764:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 3027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8764:31:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3028,
                      "nodeType": "ExpressionStatement",
                      "src": "8764:31:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3032,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2983,
                            "src": "8837:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3033,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2994,
                            "src": "8841:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3029,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "8806:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3031,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6868,
                          "src": "8806:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 3034,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8806:45:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3035,
                      "nodeType": "ExpressionStatement",
                      "src": "8806:45:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ba3690cb",
                "id": 3037,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 2989,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 2985,
                        "src": "8374:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 2990,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 2988,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "8367:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "8367:16:3"
                  }
                ],
                "name": "removeLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 2987,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "8358:8:3"
                },
                "parameters": {
                  "id": 2986,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2973,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3037,
                      "src": "8156:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2972,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8156:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2975,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3037,
                      "src": "8180:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2974,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8180:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2977,
                      "mutability": "mutable",
                      "name": "liquidityTEE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3037,
                      "src": "8208:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2976,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8208:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2979,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3037,
                      "src": "8243:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2978,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8243:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2981,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3037,
                      "src": "8273:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2980,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8273:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2983,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3037,
                      "src": "8301:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 2982,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8301:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2985,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3037,
                      "src": "8322:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2984,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8322:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8145:197:3"
                },
                "returnParameters": {
                  "id": 2995,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 2992,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3037,
                      "src": "8393:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2991,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8393:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 2994,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3037,
                      "src": "8411:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 2993,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8411:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8392:34:3"
                },
                "scope": 4452,
                "src": "8118:741:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5097
                ],
                "body": {
                  "id": 3120,
                  "nodeType": "Block",
                  "src": "9202:406:3",
                  "statements": [
                    {
                      "id": 3104,
                      "nodeType": "Block",
                      "src": "9213:270:3",
                      "statements": [
                        {
                          "assignments": [
                            3068
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3068,
                              "mutability": "mutable",
                              "name": "pairAAB",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 3104,
                              "src": "9247:15:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "typeName": {
                                "id": 3067,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "9247:7:3",
                                "stateMutability": "nonpayable",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 3075,
                          "initialValue": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3071,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2246,
                                "src": "9287:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3072,
                                "name": "tokenA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3039,
                                "src": "9296:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3073,
                                "name": "tokenB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3041,
                                "src": "9304:6:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 3069,
                                "name": "FeSwapLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6210,
                                "src": "9265:13:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                  "typeString": "type(library FeSwapLibrary)"
                                }
                              },
                              "id": 3070,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5522,
                              "src": "9265:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 3074,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9265:46:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9247:64:3"
                        },
                        {
                          "assignments": [
                            3077
                          ],
                          "declarations": [
                            {
                              "constant": false,
                              "id": 3077,
                              "mutability": "mutable",
                              "name": "value",
                              "nodeType": "VariableDeclaration",
                              "overrides": null,
                              "scope": 3104,
                              "src": "9326:10:3",
                              "stateVariable": false,
                              "storageLocation": "default",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "typeName": {
                                "id": 3076,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "9326:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "value": null,
                              "visibility": "internal"
                            }
                          ],
                          "id": 3086,
                          "initialValue": {
                            "argumentTypes": null,
                            "condition": {
                              "argumentTypes": null,
                              "id": 3078,
                              "name": "approveMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3053,
                              "src": "9339:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseExpression": {
                              "argumentTypes": null,
                              "id": 3084,
                              "name": "liquidityAAB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3043,
                              "src": "9363:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 3085,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "Conditional",
                            "src": "9339:36:3",
                            "trueExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3082,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "UnaryOperation",
                                  "operator": "-",
                                  "prefix": true,
                                  "src": "9357:2:3",
                                  "subExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 3081,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "9358:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_minus_1_by_1",
                                    "typeString": "int_const -1"
                                  }
                                ],
                                "id": 3080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9352:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 3079,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "9352:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3083,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9352:8:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "VariableDeclarationStatement",
                          "src": "9326:49:3"
                        },
                        {
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3091,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "9419:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3092,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "9419:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3095,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "9439:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                      "typeString": "contract FeSwapRouter"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                      "typeString": "contract FeSwapRouter"
                                    }
                                  ],
                                  "id": 3094,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "9431:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3093,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "9431:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3096,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9431:13:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3097,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3077,
                                "src": "9446:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3098,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3051,
                                "src": "9453:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3099,
                                "name": "v",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3055,
                                "src": "9463:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3100,
                                "name": "r",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3057,
                                "src": "9466:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 3101,
                                "name": "s",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3059,
                                "src": "9469:1:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint8",
                                  "typeString": "uint8"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3088,
                                    "name": "pairAAB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3068,
                                    "src": "9403:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3087,
                                  "name": "IFeSwapPair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4947,
                                  "src": "9391:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                    "typeString": "type(contract IFeSwapPair)"
                                  }
                                },
                                "id": 3089,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "9391:20:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                  "typeString": "contract IFeSwapPair"
                                }
                              },
                              "id": 3090,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "permit",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4665,
                              "src": "9391:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                                "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                              }
                            },
                            "id": 3102,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9391:80:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_tuple$__$",
                              "typeString": "tuple()"
                            }
                          },
                          "id": 3103,
                          "nodeType": "ExpressionStatement",
                          "src": "9391:80:3"
                        }
                      ]
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3118,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3105,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3063,
                              "src": "9494:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3106,
                              "name": "amountB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3065,
                              "src": "9503:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3107,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "9493:18:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3109,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3039,
                              "src": "9530:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3110,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3041,
                              "src": "9538:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3111,
                              "name": "liquidityAAB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3043,
                              "src": "9546:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3112,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "9560:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 3113,
                              "name": "amountAMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3045,
                              "src": "9563:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3114,
                              "name": "amountBMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3047,
                              "src": "9575:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3115,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3049,
                              "src": "9587:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3116,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3051,
                              "src": "9591:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3108,
                            "name": "removeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2971,
                            "src": "9514:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3117,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9514:86:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "9493:107:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3119,
                      "nodeType": "ExpressionStatement",
                      "src": "9493:107:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2195995c",
                "id": 3121,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3061,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "9156:8:3"
                },
                "parameters": {
                  "id": 3060,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3039,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "8910:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3038,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8910:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3041,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "8935:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3040,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "8935:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3043,
                      "mutability": "mutable",
                      "name": "liquidityAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "8960:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3042,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8960:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3045,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "8988:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3044,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8988:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3047,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "9014:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3046,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9014:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3049,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "9040:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3048,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9040:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3051,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "9061:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3050,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9061:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3053,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "9085:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3052,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "9085:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3055,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "9102:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3054,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "9102:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3057,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "9111:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3056,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9111:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3059,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "9122:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3058,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9122:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8899:239:3"
                },
                "returnParameters": {
                  "id": 3066,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3063,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "9174:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3062,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9174:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3065,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3121,
                      "src": "9188:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3064,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9188:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9173:28:3"
                },
                "scope": 4452,
                "src": "8865:743:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5124
                ],
                "body": {
                  "id": 3200,
                  "nodeType": "Block",
                  "src": "9954:355:3",
                  "statements": [
                    {
                      "assignments": [
                        3150
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3150,
                          "mutability": "mutable",
                          "name": "pairTTE",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3200,
                          "src": "9965:15:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3149,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "9965:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3157,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3153,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "10005:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3154,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3123,
                            "src": "10014:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3155,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2252,
                            "src": "10021:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3151,
                            "name": "FeSwapLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6210,
                            "src": "9983:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                              "typeString": "type(library FeSwapLibrary)"
                            }
                          },
                          "id": 3152,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5522,
                          "src": "9983:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 3156,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9983:43:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "9965:61:3"
                    },
                    {
                      "assignments": [
                        3159
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3159,
                          "mutability": "mutable",
                          "name": "value",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3200,
                          "src": "10037:10:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3158,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10037:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3168,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 3160,
                          "name": "approveMax",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3135,
                          "src": "10050:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 3166,
                          "name": "liquidityTTE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3125,
                          "src": "10074:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3167,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "10050:36:3",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3164,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "10068:2:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3163,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10069:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            ],
                            "id": 3162,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "10063:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 3161,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "10063:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3165,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10063:8:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10037:49:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3173,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "10125:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3174,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "10125:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3177,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "10145:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              ],
                              "id": 3176,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "10137:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3175,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "10137:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3178,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10137:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3179,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3159,
                            "src": "10152:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3180,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3133,
                            "src": "10159:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3181,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3137,
                            "src": "10169:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3182,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3139,
                            "src": "10172:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3183,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3141,
                            "src": "10175:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3170,
                                "name": "pairTTE",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3150,
                                "src": "10109:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3169,
                              "name": "IFeSwapPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4947,
                              "src": "10097:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                "typeString": "type(contract IFeSwapPair)"
                              }
                            },
                            "id": 3171,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10097:20:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                              "typeString": "contract IFeSwapPair"
                            }
                          },
                          "id": 3172,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4665,
                          "src": "10097:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                            "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                          }
                        },
                        "id": 3184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10097:80:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3185,
                      "nodeType": "ExpressionStatement",
                      "src": "10097:80:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3198,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3186,
                              "name": "amountToken",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3145,
                              "src": "10189:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3187,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3147,
                              "src": "10202:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3188,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "10188:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3190,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3123,
                              "src": "10234:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3191,
                              "name": "liquidityTTE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3125,
                              "src": "10241:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3192,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "10255:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 3193,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3127,
                              "src": "10258:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3194,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3129,
                              "src": "10274:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3195,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3131,
                              "src": "10288:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3196,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3133,
                              "src": "10292:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3189,
                            "name": "removeLiquidityETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3037,
                            "src": "10215:18:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3197,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10215:86:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "10188:113:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3199,
                      "nodeType": "ExpressionStatement",
                      "src": "10188:113:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ded9382a",
                "id": 3201,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3143,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "9902:8:3"
                },
                "parameters": {
                  "id": 3142,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3123,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9662:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3122,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9662:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3125,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9686:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3124,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9686:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3127,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9714:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3126,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9714:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3129,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9744:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3128,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9744:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3131,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9786:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3130,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "9786:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3133,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9807:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3132,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9807:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3135,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9831:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3134,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "9831:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3137,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9848:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3136,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "9848:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3139,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9857:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3138,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9857:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3141,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9868:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3140,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "9868:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9651:233:3"
                },
                "returnParameters": {
                  "id": 3148,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3145,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9920:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3144,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9920:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3147,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3201,
                      "src": "9938:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3146,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9938:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9919:34:3"
                },
                "scope": 4452,
                "src": "9614:695:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5143
                ],
                "body": {
                  "id": 3271,
                  "nodeType": "Block",
                  "src": "10687:460:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3239,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            null,
                            {
                              "argumentTypes": null,
                              "id": 3224,
                              "name": "amountETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3222,
                              "src": "10701:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 3225,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "10698:13:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$_t_uint256_$",
                            "typeString": "tuple(,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3227,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3203,
                              "src": "10744:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3228,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "10764:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3229,
                              "name": "liquidityTTE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3205,
                              "src": "10783:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3230,
                              "name": "liquidityTEE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3207,
                              "src": "10810:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3231,
                              "name": "amountTokenMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3209,
                              "src": "10849:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3232,
                              "name": "amountETHMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3211,
                              "src": "10878:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3235,
                                  "name": "this",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -28,
                                  "src": "10913:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                    "typeString": "contract FeSwapRouter"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                    "typeString": "contract FeSwapRouter"
                                  }
                                ],
                                "id": 3234,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "10905:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_address_$",
                                  "typeString": "type(address)"
                                },
                                "typeName": {
                                  "id": 3233,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "10905:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 3236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "10905:13:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3237,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3215,
                              "src": "10933:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3226,
                            "name": "removeLiquidity",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2971,
                            "src": "10714:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$_t_uint256_$",
                              "typeString": "function (address,address,uint256,uint256,uint256,uint256,address,uint256) returns (uint256,uint256)"
                            }
                          },
                          "id": 3238,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10714:238:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256)"
                          }
                        },
                        "src": "10698:254:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3240,
                      "nodeType": "ExpressionStatement",
                      "src": "10698:254:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3244,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3203,
                            "src": "10991:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3245,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3213,
                            "src": "10998:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3252,
                                    "name": "this",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -28,
                                    "src": "11034:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                      "typeString": "contract FeSwapRouter"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                      "typeString": "contract FeSwapRouter"
                                    }
                                  ],
                                  "id": 3251,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "11026:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 3250,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "11026:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 3253,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11026:13:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3247,
                                    "name": "token",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3203,
                                    "src": "11009:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3246,
                                  "name": "IERC20",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4536,
                                  "src": "11002:6:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                    "typeString": "type(contract IERC20)"
                                  }
                                },
                                "id": 3248,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "11002:13:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IERC20_$4536",
                                  "typeString": "contract IERC20"
                                }
                              },
                              "id": 3249,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "balanceOf",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 4497,
                              "src": "11002:23:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                "typeString": "function (address) view external returns (uint256)"
                              }
                            },
                            "id": 3254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11002:38:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3241,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "10963:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3243,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6797,
                          "src": "10963:27:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 3255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10963:78:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3256,
                      "nodeType": "ExpressionStatement",
                      "src": "10963:78:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3261,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3222,
                            "src": "11073:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3258,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "11058:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3257,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5420,
                              "src": "11052:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 3259,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11052:11:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$5420",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 3260,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5419,
                          "src": "11052:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 3262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11052:31:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3263,
                      "nodeType": "ExpressionStatement",
                      "src": "11052:31:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3267,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3213,
                            "src": "11125:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3268,
                            "name": "amountETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3222,
                            "src": "11129:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3264,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "11094:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3266,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6868,
                          "src": "11094:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 3269,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11094:45:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3270,
                      "nodeType": "ExpressionStatement",
                      "src": "11094:45:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "8de9d7d2",
                "id": 3272,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3219,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3215,
                        "src": "10652:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3220,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3218,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "10645:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "10645:16:3"
                  }
                ],
                "name": "removeLiquidityETHFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3217,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "10636:8:3"
                },
                "parameters": {
                  "id": 3216,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3203,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3272,
                      "src": "10433:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3202,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10433:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3205,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3272,
                      "src": "10457:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3204,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10457:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3207,
                      "mutability": "mutable",
                      "name": "liquidityTEE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3272,
                      "src": "10485:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3206,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10485:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3209,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3272,
                      "src": "10521:19:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3208,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10521:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3211,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3272,
                      "src": "10551:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3210,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10551:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3213,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3272,
                      "src": "10579:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3212,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "10579:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3215,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3272,
                      "src": "10600:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3214,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10600:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10422:198:3"
                },
                "returnParameters": {
                  "id": 3223,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3222,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3272,
                      "src": "10671:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3221,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10671:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10670:16:3"
                },
                "scope": 4452,
                "src": "10382:765:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5166
                ],
                "body": {
                  "id": 3345,
                  "nodeType": "Block",
                  "src": "11452:358:3",
                  "statements": [
                    {
                      "assignments": [
                        3297
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3297,
                          "mutability": "mutable",
                          "name": "pair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3345,
                          "src": "11463:12:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3296,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "11463:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3304,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3300,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "11500:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3301,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3274,
                            "src": "11509:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3302,
                            "name": "WETH",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2252,
                            "src": "11516:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3298,
                            "name": "FeSwapLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6210,
                            "src": "11478:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                              "typeString": "type(library FeSwapLibrary)"
                            }
                          },
                          "id": 3299,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "pairFor",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5522,
                          "src": "11478:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                            "typeString": "function (address,address,address) pure returns (address)"
                          }
                        },
                        "id": 3303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11478:43:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11463:58:3"
                    },
                    {
                      "assignments": [
                        3306
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3306,
                          "mutability": "mutable",
                          "name": "value",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3345,
                          "src": "11532:10:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 3305,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "11532:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3315,
                      "initialValue": {
                        "argumentTypes": null,
                        "condition": {
                          "argumentTypes": null,
                          "id": 3307,
                          "name": "approveMax",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3284,
                          "src": "11545:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseExpression": {
                          "argumentTypes": null,
                          "id": 3313,
                          "name": "liquidityTTE",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3276,
                          "src": "11569:12:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "nodeType": "Conditional",
                        "src": "11545:36:3",
                        "trueExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "11563:2:3",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "11564:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            ],
                            "id": 3309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "11558:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 3308,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "11558:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 3312,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11558:8:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11532:49:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3320,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "11617:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "11617:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3324,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "11637:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              ],
                              "id": 3323,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "11629:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3322,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "11629:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3325,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11629:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3326,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3306,
                            "src": "11644:5:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3327,
                            "name": "deadline",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3282,
                            "src": "11651:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3328,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3286,
                            "src": "11661:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3329,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3288,
                            "src": "11664:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3330,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3290,
                            "src": "11667:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3317,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3297,
                                "src": "11604:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3316,
                              "name": "IFeSwapPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4947,
                              "src": "11592:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                "typeString": "type(contract IFeSwapPair)"
                              }
                            },
                            "id": 3318,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "11592:17:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                              "typeString": "contract IFeSwapPair"
                            }
                          },
                          "id": 3319,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "permit",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4665,
                          "src": "11592:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_address_$_t_uint256_$_t_uint256_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$__$",
                            "typeString": "function (address,address,uint256,uint256,uint8,bytes32,bytes32) external"
                          }
                        },
                        "id": 3331,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11592:77:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3332,
                      "nodeType": "ExpressionStatement",
                      "src": "11592:77:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3343,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 3333,
                          "name": "amountETH",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3294,
                          "src": "11680:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3335,
                              "name": "token",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3274,
                              "src": "11738:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3336,
                              "name": "liquidityTTE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3276,
                              "src": "11745:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3337,
                              "name": "liquidityTEE",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3278,
                              "src": "11759:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3338,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11773:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3339,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "11776:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            {
                              "argumentTypes": null,
                              "id": 3340,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3280,
                              "src": "11779:2:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3341,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3282,
                              "src": "11783:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 3334,
                            "name": "removeLiquidityETHFeeOnTransfer",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3272,
                            "src": "11692:31:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_uint256_$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (address,uint256,uint256,uint256,uint256,address,uint256) returns (uint256)"
                            }
                          },
                          "id": 3342,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "11692:110:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11680:122:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 3344,
                      "nodeType": "ExpressionStatement",
                      "src": "11680:122:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "573692c1",
                "id": 3346,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermitFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3292,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "11418:8:3"
                },
                "parameters": {
                  "id": 3291,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3274,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11214:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3273,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11214:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3276,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11238:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3275,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11238:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3278,
                      "mutability": "mutable",
                      "name": "liquidityTEE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11266:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3277,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11266:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3280,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11302:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3279,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11302:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3282,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11323:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3281,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11323:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3284,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11347:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 3283,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "11347:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3286,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11364:7:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 3285,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "11364:5:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3288,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11373:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3287,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11373:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3290,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11384:9:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 3289,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "11384:7:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11203:197:3"
                },
                "returnParameters": {
                  "id": 3295,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3294,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3346,
                      "src": "11436:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3293,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11436:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11435:16:3"
                },
                "scope": 4452,
                "src": "11153:657:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 3432,
                  "nodeType": "Block",
                  "src": "12014:447:3",
                  "statements": [
                    {
                      "body": {
                        "id": 3430,
                        "nodeType": "Block",
                        "src": "12068:386:3",
                        "statements": [
                          {
                            "assignments": [
                              3371,
                              3373
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3371,
                                "mutability": "mutable",
                                "name": "tokenInput",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3430,
                                "src": "12084:18:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 3370,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12084:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 3373,
                                "mutability": "mutable",
                                "name": "tokenOutput",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3430,
                                "src": "12104:19:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 3372,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12104:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3383,
                            "initialValue": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3374,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3352,
                                    "src": "12128:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 3376,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3375,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3358,
                                    "src": "12133:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12128:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3377,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3352,
                                    "src": "12137:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 3381,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3380,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3378,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3358,
                                      "src": "12142:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3379,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12146:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "12142:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "12137:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "id": 3382,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "12127:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12083:66:3"
                          },
                          {
                            "assignments": [
                              3385
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3385,
                                "mutability": "mutable",
                                "name": "amountOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3430,
                                "src": "12164:14:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 3384,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12164:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3391,
                            "initialValue": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3386,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3349,
                                "src": "12181:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3390,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3389,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3387,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3358,
                                  "src": "12189:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3388,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12193:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12189:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12181:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12164:31:3"
                          },
                          {
                            "assignments": [
                              3393
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3393,
                                "mutability": "mutable",
                                "name": "to",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 3430,
                                "src": "12210:10:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 3392,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12210:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3412,
                            "initialValue": {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3399,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 3394,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3358,
                                  "src": "12223:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 3398,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 3395,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3352,
                                      "src": "12227:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3396,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "12227:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 3397,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "12241:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "12227:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "12223:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "id": 3410,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3354,
                                "src": "12304:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 3411,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "12223:84:3",
                              "trueExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3402,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2246,
                                    "src": "12267:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 3403,
                                    "name": "tokenOutput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3373,
                                    "src": "12276:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 3404,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3352,
                                      "src": "12289:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 3408,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 3407,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 3405,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3358,
                                        "src": "12294:1:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 3406,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12298:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "12294:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "12289:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3400,
                                    "name": "FeSwapLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6210,
                                    "src": "12245:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                      "typeString": "type(library FeSwapLibrary)"
                                    }
                                  },
                                  "id": 3401,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5522,
                                  "src": "12245:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 3409,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "12245:56:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12210:97:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3422,
                                  "name": "amountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3385,
                                  "src": "12414:9:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 3423,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3393,
                                  "src": "12425:2:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 3426,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12439:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 3425,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "12429:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (bytes memory)"
                                    },
                                    "typeName": {
                                      "id": 3424,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "12433:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    }
                                  },
                                  "id": 3427,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12429:12:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 3416,
                                          "name": "factory",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 2246,
                                          "src": "12356:7:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3417,
                                          "name": "tokenInput",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3371,
                                          "src": "12365:10:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 3418,
                                          "name": "tokenOutput",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 3373,
                                          "src": "12377:11:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 3414,
                                          "name": "FeSwapLibrary",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6210,
                                          "src": "12334:13:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                            "typeString": "type(library FeSwapLibrary)"
                                          }
                                        },
                                        "id": 3415,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "pairFor",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 5522,
                                        "src": "12334:21:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                          "typeString": "function (address,address,address) pure returns (address)"
                                        }
                                      },
                                      "id": 3419,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "12334:55:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 3413,
                                    "name": "IFeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4947,
                                    "src": "12322:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                      "typeString": "type(contract IFeSwapPair)"
                                    }
                                  },
                                  "id": 3420,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "12322:68:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 3421,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4911,
                                "src": "12322:91:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (uint256,address,bytes memory) external"
                                }
                              },
                              "id": 3428,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "12322:120:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 3429,
                            "nodeType": "ExpressionStatement",
                            "src": "12322:120:3"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3366,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3361,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3358,
                          "src": "12042:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3365,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3362,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3352,
                              "src": "12046:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3363,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12046:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3364,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12060:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "12046:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12042:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 3431,
                      "initializationExpression": {
                        "assignments": [
                          3358
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3358,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 3431,
                            "src": "12030:6:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3357,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "12030:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3360,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3359,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12039:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "12030:10:3"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3368,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "12063:3:3",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 3367,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3358,
                            "src": "12063:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3369,
                        "nodeType": "ExpressionStatement",
                        "src": "12063:3:3"
                      },
                      "nodeType": "ForStatement",
                      "src": "12025:429:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 3433,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_swap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3355,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3349,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3433,
                      "src": "11938:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3347,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "11938:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3348,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11938:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3352,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3433,
                      "src": "11961:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3350,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "11961:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3351,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "11961:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3354,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3433,
                      "src": "11984:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3353,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "11984:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11937:59:3"
                },
                "returnParameters": {
                  "id": 3356,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "12014:0:3"
                },
                "scope": 4452,
                "src": "11923:538:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "baseFunctions": [
                  5183
                ],
                "body": {
                  "id": 3500,
                  "nodeType": "Block",
                  "src": "12716:351:3",
                  "statements": [
                    {
                      "assignments": [
                        3455
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3455,
                          "mutability": "mutable",
                          "name": "firstPair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3500,
                          "src": "12727:17:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3454,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "12727:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3456,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "12727:17:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3466,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3457,
                              "name": "firstPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3455,
                              "src": "12756:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3458,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3452,
                              "src": "12767:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 3459,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "12755:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3462,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2246,
                              "src": "12806:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3463,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3435,
                              "src": "12815:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3464,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3440,
                              "src": "12825:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3460,
                              "name": "FeSwapLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6210,
                              "src": "12778:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                "typeString": "type(library FeSwapLibrary)"
                              }
                            },
                            "id": 3461,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5948,
                            "src": "12778:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$returns$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] calldata) returns (address,uint256[] memory)"
                            }
                          },
                          "id": 3465,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "12778:52:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "src": "12755:75:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3467,
                      "nodeType": "ExpressionStatement",
                      "src": "12755:75:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3476,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3469,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3452,
                                "src": "12849:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3474,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3473,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3470,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3452,
                                    "src": "12857:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3471,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "12857:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3472,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12874:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "12857:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "12849:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3475,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3437,
                              "src": "12880:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12849:43:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 3477,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12894:42:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 3468,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "12841:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3478,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12841:96:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3479,
                      "nodeType": "ExpressionStatement",
                      "src": "12841:96:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3483,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3440,
                              "src": "12980:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 3485,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "12985:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "12980:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3486,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "12989:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "12989:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3488,
                            "name": "firstPair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3455,
                            "src": "13001:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3489,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3452,
                              "src": "13013:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3491,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3490,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13021:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13013:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3480,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "12948:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3482,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6843,
                          "src": "12948:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "12948:76:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3493,
                      "nodeType": "ExpressionStatement",
                      "src": "12948:76:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3495,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3452,
                            "src": "13041:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3496,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3440,
                            "src": "13050:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3497,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3442,
                            "src": "13056:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3494,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3433,
                          "src": "13035:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 3498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13035:24:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3499,
                      "nodeType": "ExpressionStatement",
                      "src": "13035:24:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "38ed1739",
                "id": 3501,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3448,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3444,
                        "src": "12674:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3449,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3447,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "12667:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "12667:16:3"
                  }
                ],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3446,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "12658:8:3"
                },
                "parameters": {
                  "id": 3445,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3435,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3501,
                      "src": "12513:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3434,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12513:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3437,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3501,
                      "src": "12537:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3436,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12537:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3440,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3501,
                      "src": "12565:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3438,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "12565:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3439,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12565:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3442,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3501,
                      "src": "12599:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3441,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "12599:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3444,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3501,
                      "src": "12620:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3443,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12620:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12502:138:3"
                },
                "returnParameters": {
                  "id": 3453,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3452,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3501,
                      "src": "12693:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3450,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "12693:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3451,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "12693:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12692:23:3"
                },
                "scope": 4452,
                "src": "12469:598:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5200
                ],
                "body": {
                  "id": 3565,
                  "nodeType": "Block",
                  "src": "13322:328:3",
                  "statements": [
                    {
                      "assignments": [
                        3523
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3523,
                          "mutability": "mutable",
                          "name": "firstPair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3565,
                          "src": "13333:17:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3522,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13333:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3524,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13333:17:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3525,
                              "name": "firstPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3523,
                              "src": "13362:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3526,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3520,
                              "src": "13373:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 3527,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "13361:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3530,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2246,
                              "src": "13411:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3531,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3503,
                              "src": "13420:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3532,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3508,
                              "src": "13431:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3528,
                              "name": "FeSwapLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6210,
                              "src": "13384:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                "typeString": "type(library FeSwapLibrary)"
                              }
                            },
                            "id": 3529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6124,
                            "src": "13384:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$returns$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] calldata) returns (address,uint256[] memory)"
                            }
                          },
                          "id": 3533,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13384:52:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "src": "13361:75:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3535,
                      "nodeType": "ExpressionStatement",
                      "src": "13361:75:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3541,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3537,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3520,
                                "src": "13455:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3539,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3538,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13463:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13455:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3540,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3505,
                              "src": "13469:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "13455:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                            "id": 3542,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13482:38:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a7812d51d469f75d7f63a519b753562dd9549045fa5f7156ade909998762a5ca",
                              "typeString": "literal_string \"FeSwapRouter: EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "FeSwapRouter: EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a7812d51d469f75d7f63a519b753562dd9549045fa5f7156ade909998762a5ca",
                              "typeString": "literal_string \"FeSwapRouter: EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 3536,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "13447:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3543,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13447:74:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3544,
                      "nodeType": "ExpressionStatement",
                      "src": "13447:74:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3548,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3508,
                              "src": "13564:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 3550,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3549,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13569:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13564:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3551,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "13573:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3552,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "13573:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3553,
                            "name": "firstPair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3523,
                            "src": "13585:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3554,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3520,
                              "src": "13596:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3556,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3555,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "13604:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "13596:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3545,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "13532:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3547,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6843,
                          "src": "13532:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13532:75:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3558,
                      "nodeType": "ExpressionStatement",
                      "src": "13532:75:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3560,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3520,
                            "src": "13624:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3561,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3508,
                            "src": "13633:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3562,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3510,
                            "src": "13639:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3559,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3433,
                          "src": "13618:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 3563,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13618:24:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3564,
                      "nodeType": "ExpressionStatement",
                      "src": "13618:24:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "8803dbee",
                "id": 3566,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3516,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3512,
                        "src": "13280:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3517,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3515,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "13273:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "13273:16:3"
                  }
                ],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3514,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "13264:8:3"
                },
                "parameters": {
                  "id": 3513,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3503,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3566,
                      "src": "13119:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3502,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13119:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3505,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3566,
                      "src": "13144:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3504,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13144:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3508,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3566,
                      "src": "13171:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3506,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13171:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3507,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13171:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3510,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3566,
                      "src": "13205:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3509,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13205:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3512,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3566,
                      "src": "13226:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3511,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13226:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13108:138:3"
                },
                "returnParameters": {
                  "id": 3521,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3520,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3566,
                      "src": "13299:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3518,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13299:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3519,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13299:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13298:23:3"
                },
                "scope": 4452,
                "src": "13075:575:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5215
                ],
                "body": {
                  "id": 3649,
                  "nodeType": "Block",
                  "src": "13866:476:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3590,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3586,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3571,
                                "src": "13885:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3588,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3587,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "13890:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "13885:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3589,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "13896:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "13885:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e56414c49445f50415448",
                            "id": 3591,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "13902:28:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            },
                            "value": "FeSwapRouter: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            }
                          ],
                          "id": 3585,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "13877:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3592,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "13877:54:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3593,
                      "nodeType": "ExpressionStatement",
                      "src": "13877:54:3"
                    },
                    {
                      "assignments": [
                        3595
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3595,
                          "mutability": "mutable",
                          "name": "_firstPair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3649,
                          "src": "13942:18:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3594,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "13942:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3596,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "13942:18:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3607,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3597,
                              "name": "_firstPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3595,
                              "src": "13972:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3598,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3583,
                              "src": "13984:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 3599,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "13971:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3602,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2246,
                              "src": "14023:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3603,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "14032:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3604,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "14032:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3605,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3571,
                              "src": "14043:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3600,
                              "name": "FeSwapLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6210,
                              "src": "13995:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                "typeString": "type(library FeSwapLibrary)"
                              }
                            },
                            "id": 3601,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5948,
                            "src": "13995:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$returns$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] calldata) returns (address,uint256[] memory)"
                            }
                          },
                          "id": 3606,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "13995:53:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "src": "13971:77:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3608,
                      "nodeType": "ExpressionStatement",
                      "src": "13971:77:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3617,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3610,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3583,
                                "src": "14097:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3615,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3614,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3611,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3583,
                                    "src": "14105:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3612,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "14105:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3613,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14122:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "14105:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14097:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3616,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3568,
                              "src": "14128:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14097:43:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 3618,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14142:42:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 3609,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "14089:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3619,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14089:96:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3620,
                      "nodeType": "ExpressionStatement",
                      "src": "14089:96:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3622,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2252,
                                  "src": "14202:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3621,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5420,
                                "src": "14196:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 3623,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "14196:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$5420",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 3624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5405,
                            "src": "14196:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 3628,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3625,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3583,
                                "src": "14223:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3627,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3626,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14231:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14223:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "14196:38:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 3629,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14196:40:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3630,
                      "nodeType": "ExpressionStatement",
                      "src": "14196:40:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3636,
                                "name": "_firstPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3595,
                                "src": "14275:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3637,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3583,
                                  "src": "14287:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3639,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3638,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14295:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "14287:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3633,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2252,
                                    "src": "14260:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3632,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5420,
                                  "src": "14254:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 3634,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "14254:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$5420",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 3635,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5414,
                              "src": "14254:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 3640,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14254:44:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 3631,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "14247:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 3641,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14247:52:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3642,
                      "nodeType": "ExpressionStatement",
                      "src": "14247:52:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3644,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3583,
                            "src": "14316:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3645,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3571,
                            "src": "14325:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3646,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3573,
                            "src": "14331:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3643,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3433,
                          "src": "14310:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 3647,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14310:24:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3648,
                      "nodeType": "ExpressionStatement",
                      "src": "14310:24:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "7ff36ab5",
                "id": 3650,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3579,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3575,
                        "src": "13810:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3580,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3578,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "13803:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "13803:16:3"
                  }
                ],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3577,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "13786:8:3"
                },
                "parameters": {
                  "id": 3576,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3568,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3650,
                      "src": "13689:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3567,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13689:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3571,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3650,
                      "src": "13708:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3569,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "13708:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3570,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13708:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3573,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3650,
                      "src": "13733:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3572,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "13733:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3575,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3650,
                      "src": "13745:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3574,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "13745:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13688:71:3"
                },
                "returnParameters": {
                  "id": 3584,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3583,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3650,
                      "src": "13838:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3581,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "13838:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3582,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "13838:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "13837:23:3"
                },
                "scope": 4452,
                "src": "13658:684:3",
                "stateMutability": "payable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5232
                ],
                "body": {
                  "id": 3753,
                  "nodeType": "Block",
                  "src": "14565:555:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3679,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3672,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3657,
                                "src": "14584:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3677,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3676,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3673,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3657,
                                    "src": "14589:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 3674,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "14589:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3675,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "14603:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "14589:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14584:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3678,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "14609:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "14584:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e56414c49445f50415448",
                            "id": 3680,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14615:28:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            },
                            "value": "FeSwapRouter: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            }
                          ],
                          "id": 3671,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "14576:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3681,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14576:68:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3682,
                      "nodeType": "ExpressionStatement",
                      "src": "14576:68:3"
                    },
                    {
                      "assignments": [
                        3684
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3684,
                          "mutability": "mutable",
                          "name": "_firstPair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3753,
                          "src": "14655:18:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3683,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "14655:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3685,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "14655:18:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3695,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3686,
                              "name": "_firstPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3684,
                              "src": "14685:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3687,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3669,
                              "src": "14697:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 3688,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "14684:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3691,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2246,
                              "src": "14735:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3692,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3652,
                              "src": "14744:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3693,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3657,
                              "src": "14755:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3689,
                              "name": "FeSwapLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6210,
                              "src": "14708:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                "typeString": "type(library FeSwapLibrary)"
                              }
                            },
                            "id": 3690,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6124,
                            "src": "14708:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$returns$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] calldata) returns (address,uint256[] memory)"
                            }
                          },
                          "id": 3694,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "14708:52:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "src": "14684:76:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3696,
                      "nodeType": "ExpressionStatement",
                      "src": "14684:76:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3702,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3698,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3669,
                                "src": "14779:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3700,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3699,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "14787:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "14779:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3701,
                              "name": "amountInMax",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3654,
                              "src": "14793:11:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "14779:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                            "id": 3703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "14806:38:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a7812d51d469f75d7f63a519b753562dd9549045fa5f7156ade909998762a5ca",
                              "typeString": "literal_string \"FeSwapRouter: EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "FeSwapRouter: EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a7812d51d469f75d7f63a519b753562dd9549045fa5f7156ade909998762a5ca",
                              "typeString": "literal_string \"FeSwapRouter: EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 3697,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "14771:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3704,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14771:74:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3705,
                      "nodeType": "ExpressionStatement",
                      "src": "14771:74:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3709,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3657,
                              "src": "14888:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 3711,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3710,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14893:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14888:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3712,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "14897:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3713,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "14897:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3714,
                            "name": "_firstPair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3684,
                            "src": "14909:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3715,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3669,
                              "src": "14921:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3717,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "14929:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "14921:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3706,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "14856:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3708,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6843,
                          "src": "14856:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14856:76:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3719,
                      "nodeType": "ExpressionStatement",
                      "src": "14856:76:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3721,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3669,
                            "src": "14949:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3722,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3657,
                            "src": "14958:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3725,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "14972:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              ],
                              "id": 3724,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "14964:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3723,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "14964:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3726,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14964:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 3720,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3433,
                          "src": "14943:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 3727,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14943:35:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3728,
                      "nodeType": "ExpressionStatement",
                      "src": "14943:35:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3733,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3669,
                              "src": "15010:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3738,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3737,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3734,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3669,
                                  "src": "15018:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3735,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15018:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3736,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15035:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "15018:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15010:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3730,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "14995:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3729,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5420,
                              "src": "14989:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 3731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "14989:11:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$5420",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 3732,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5419,
                          "src": "14989:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 3739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "14989:49:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3740,
                      "nodeType": "ExpressionStatement",
                      "src": "14989:49:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3744,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3659,
                            "src": "15080:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3745,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3669,
                              "src": "15084:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3750,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3749,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3746,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3669,
                                  "src": "15092:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3747,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15092:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3748,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15109:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "15092:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15084:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3741,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "15049:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3743,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6868,
                          "src": "15049:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 3751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15049:63:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3752,
                      "nodeType": "ExpressionStatement",
                      "src": "15049:63:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "4a25d94a",
                "id": 3754,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3665,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3661,
                        "src": "14509:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3666,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3664,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "14502:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "14502:16:3"
                  }
                ],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3663,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "14493:8:3"
                },
                "parameters": {
                  "id": 3662,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3652,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3754,
                      "src": "14381:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3651,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14381:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3654,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3754,
                      "src": "14397:16:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3653,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14397:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3657,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3754,
                      "src": "14415:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3655,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "14415:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3656,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14415:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3659,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3754,
                      "src": "14440:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3658,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "14440:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3661,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3754,
                      "src": "14452:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3660,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "14452:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "14380:86:3"
                },
                "returnParameters": {
                  "id": 3670,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3669,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3754,
                      "src": "14537:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3667,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "14537:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3668,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "14537:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "14536:23:3"
                },
                "scope": 4452,
                "src": "14350:770:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5249
                ],
                "body": {
                  "id": 3860,
                  "nodeType": "Block",
                  "src": "15343:577:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3783,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3776,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3761,
                                "src": "15362:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3781,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3780,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3777,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3761,
                                    "src": "15367:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 3778,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "15367:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3779,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15381:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "15367:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15362:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3782,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "15387:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "15362:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e56414c49445f50415448",
                            "id": 3784,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15393:28:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            },
                            "value": "FeSwapRouter: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            }
                          ],
                          "id": 3775,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "15354:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15354:68:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3786,
                      "nodeType": "ExpressionStatement",
                      "src": "15354:68:3"
                    },
                    {
                      "assignments": [
                        3788
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3788,
                          "mutability": "mutable",
                          "name": "_firstPair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3860,
                          "src": "15433:18:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3787,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "15433:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3789,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "15433:18:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3799,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3790,
                              "name": "_firstPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3788,
                              "src": "15463:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3791,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3773,
                              "src": "15475:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 3792,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "15462:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3795,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2246,
                              "src": "15514:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3796,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3756,
                              "src": "15523:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3797,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3761,
                              "src": "15533:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3793,
                              "name": "FeSwapLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6210,
                              "src": "15486:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                "typeString": "type(library FeSwapLibrary)"
                              }
                            },
                            "id": 3794,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsOut",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5948,
                            "src": "15486:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$returns$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] calldata) returns (address,uint256[] memory)"
                            }
                          },
                          "id": 3798,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "15486:52:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "src": "15462:76:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3800,
                      "nodeType": "ExpressionStatement",
                      "src": "15462:76:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3809,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3802,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3773,
                                "src": "15557:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3807,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 3806,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 3803,
                                    "name": "amounts",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3773,
                                    "src": "15565:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                      "typeString": "uint256[] memory"
                                    }
                                  },
                                  "id": 3804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "15565:14:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 3805,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "15582:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "15565:18:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "15557:27:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3808,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3758,
                              "src": "15588:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "15557:43:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 3810,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "15602:42:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 3801,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "15549:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3811,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15549:96:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3812,
                      "nodeType": "ExpressionStatement",
                      "src": "15549:96:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3816,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3761,
                              "src": "15688:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 3818,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3817,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15693:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15688:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3819,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "15697:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 3820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "15697:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3821,
                            "name": "_firstPair",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3788,
                            "src": "15709:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3822,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3773,
                              "src": "15721:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3824,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 3823,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "15729:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15721:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3813,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "15656:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3815,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6843,
                          "src": "15656:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 3825,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15656:76:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3826,
                      "nodeType": "ExpressionStatement",
                      "src": "15656:76:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3828,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3773,
                            "src": "15749:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3829,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3761,
                            "src": "15758:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3832,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "15772:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              ],
                              "id": 3831,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "15764:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 3830,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "15764:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 3833,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15764:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 3827,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3433,
                          "src": "15743:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 3834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15743:35:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3835,
                      "nodeType": "ExpressionStatement",
                      "src": "15743:35:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3840,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3773,
                              "src": "15810:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3845,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3844,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3841,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3773,
                                  "src": "15818:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3842,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15818:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3843,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15835:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "15818:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15810:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3837,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "15795:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 3836,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5420,
                              "src": "15789:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 3838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "15789:11:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$5420",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 3839,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5419,
                          "src": "15789:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 3846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15789:49:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3847,
                      "nodeType": "ExpressionStatement",
                      "src": "15789:49:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3851,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3763,
                            "src": "15880:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 3852,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3773,
                              "src": "15884:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            },
                            "id": 3857,
                            "indexExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3856,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3853,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3773,
                                  "src": "15892:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3854,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "length",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "15892:14:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 3855,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "15909:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "15892:18:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "15884:27:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 3848,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "15849:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 3850,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6868,
                          "src": "15849:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 3858,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "15849:63:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3859,
                      "nodeType": "ExpressionStatement",
                      "src": "15849:63:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "18cbafe5",
                "id": 3861,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3769,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3765,
                        "src": "15287:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3770,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3768,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "15280:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "15280:16:3"
                  }
                ],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3767,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "15271:8:3"
                },
                "parameters": {
                  "id": 3766,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3756,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3861,
                      "src": "15159:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3755,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15159:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3758,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3861,
                      "src": "15174:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3757,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15174:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3761,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3861,
                      "src": "15193:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3759,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15193:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3760,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "15193:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3763,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3861,
                      "src": "15218:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3762,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "15218:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3765,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3861,
                      "src": "15230:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3764,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15230:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15158:86:3"
                },
                "returnParameters": {
                  "id": 3774,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3773,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3861,
                      "src": "15315:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3771,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "15315:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3772,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "15315:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15314:23:3"
                },
                "scope": 4452,
                "src": "15128:792:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5264
                ],
                "body": {
                  "id": 3961,
                  "nodeType": "Block",
                  "src": "16133:562:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 3885,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3881,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3866,
                                "src": "16152:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 3883,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3882,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16157:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16152:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 3884,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "16163:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "16152:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e56414c49445f50415448",
                            "id": 3886,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16169:28:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            },
                            "value": "FeSwapRouter: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            }
                          ],
                          "id": 3880,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "16144:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3887,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16144:54:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3888,
                      "nodeType": "ExpressionStatement",
                      "src": "16144:54:3"
                    },
                    {
                      "assignments": [
                        3890
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 3890,
                          "mutability": "mutable",
                          "name": "_firstPair",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 3961,
                          "src": "16209:18:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 3889,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "16209:7:3",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 3891,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "16209:18:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 3901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 3892,
                              "name": "_firstPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3890,
                              "src": "16239:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3893,
                              "name": "amounts",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3878,
                              "src": "16251:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                "typeString": "uint256[] memory"
                              }
                            }
                          ],
                          "id": 3894,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "16238:21:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 3897,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2246,
                              "src": "16289:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3898,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3863,
                              "src": "16298:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 3899,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3866,
                              "src": "16309:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3895,
                              "name": "FeSwapLibrary",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6210,
                              "src": "16262:13:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                "typeString": "type(library FeSwapLibrary)"
                              }
                            },
                            "id": 3896,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getAmountsIn",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6124,
                            "src": "16262:26:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$returns$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (address,uint256,address[] calldata) returns (address,uint256[] memory)"
                            }
                          },
                          "id": 3900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16262:52:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_address_$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "tuple(address,uint256[] memory)"
                          }
                        },
                        "src": "16238:76:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3902,
                      "nodeType": "ExpressionStatement",
                      "src": "16238:76:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 3909,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3904,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3878,
                                "src": "16333:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3906,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3905,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16341:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16333:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3907,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "16347:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3908,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "value",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16347:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "16333:23:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a204558434553534956455f494e5055545f414d4f554e54",
                            "id": 3910,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16358:38:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_a7812d51d469f75d7f63a519b753562dd9549045fa5f7156ade909998762a5ca",
                              "typeString": "literal_string \"FeSwapRouter: EXCESSIVE_INPUT_AMOUNT\""
                            },
                            "value": "FeSwapRouter: EXCESSIVE_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_a7812d51d469f75d7f63a519b753562dd9549045fa5f7156ade909998762a5ca",
                              "typeString": "literal_string \"FeSwapRouter: EXCESSIVE_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 3903,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "16325:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 3911,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16325:72:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3912,
                      "nodeType": "ExpressionStatement",
                      "src": "16325:72:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 3914,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2252,
                                  "src": "16414:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3913,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5420,
                                "src": "16408:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 3915,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "16408:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$5420",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 3916,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5405,
                            "src": "16408:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 3920,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 3917,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3878,
                                "src": "16435:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 3919,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 3918,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "16443:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "16435:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "16408:38:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 3921,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16408:40:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3922,
                      "nodeType": "ExpressionStatement",
                      "src": "16408:40:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 3928,
                                "name": "_firstPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3890,
                                "src": "16487:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3929,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3878,
                                  "src": "16499:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3931,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3930,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16507:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16499:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 3925,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2252,
                                    "src": "16472:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 3924,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5420,
                                  "src": "16466:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 3926,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "16466:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$5420",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 3927,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5414,
                              "src": "16466:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 3932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "16466:44:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 3923,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "16459:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 3933,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16459:52:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3934,
                      "nodeType": "ExpressionStatement",
                      "src": "16459:52:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 3936,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3878,
                            "src": "16528:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3937,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3866,
                            "src": "16537:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 3938,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3868,
                            "src": "16543:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 3935,
                          "name": "_swap",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3433,
                          "src": "16522:5:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (uint256[] memory,address[] memory,address)"
                          }
                        },
                        "id": 3939,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "16522:24:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 3940,
                      "nodeType": "ExpressionStatement",
                      "src": "16522:24:3"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3946,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 3941,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "16597:3:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 3942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "16597:9:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 3943,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3878,
                            "src": "16609:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 3945,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 3944,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16617:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "16609:10:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16597:22:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 3960,
                      "nodeType": "IfStatement",
                      "src": "16593:94:3",
                      "trueBody": {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 3950,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "16652:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 3951,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "16652:10:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 3957,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 3952,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "16664:3:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 3953,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "value",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "16664:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 3954,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3878,
                                  "src": "16676:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 3956,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 3955,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "16684:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "16676:10:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "16664:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 3947,
                              "name": "TransferHelper",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6869,
                              "src": "16621:14:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                "typeString": "type(library TransferHelper)"
                              }
                            },
                            "id": 3949,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "safeTransferETH",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6868,
                            "src": "16621:30:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                              "typeString": "function (address,uint256)"
                            }
                          },
                          "id": 3958,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "16621:66:3",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 3959,
                        "nodeType": "ExpressionStatement",
                        "src": "16621:66:3"
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fb3bdb41",
                "id": 3962,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 3874,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 3870,
                        "src": "16077:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 3875,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 3873,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "16070:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "16070:16:3"
                  }
                ],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 3872,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "16053:8:3"
                },
                "parameters": {
                  "id": 3871,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3863,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3962,
                      "src": "15959:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3862,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "15959:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3866,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3962,
                      "src": "15975:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3864,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "15975:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3865,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "15975:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3868,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3962,
                      "src": "16000:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3867,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "16000:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3870,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3962,
                      "src": "16012:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 3869,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "16012:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "15958:68:3"
                },
                "returnParameters": {
                  "id": 3879,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3878,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 3962,
                      "src": "16105:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3876,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "16105:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3877,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "16105:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16104:23:3"
                },
                "scope": 4452,
                "src": "15928:767:3",
                "stateMutability": "payable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 4081,
                  "nodeType": "Block",
                  "src": "16929:807:3",
                  "statements": [
                    {
                      "body": {
                        "id": 4079,
                        "nodeType": "Block",
                        "src": "16983:746:3",
                        "statements": [
                          {
                            "assignments": [
                              3984,
                              3986
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3984,
                                "mutability": "mutable",
                                "name": "input",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4079,
                                "src": "16999:13:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 3983,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "16999:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 3986,
                                "mutability": "mutable",
                                "name": "output",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4079,
                                "src": "17014:14:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 3985,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17014:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 3996,
                            "initialValue": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3987,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3965,
                                    "src": "17033:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 3989,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 3988,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3971,
                                    "src": "17038:1:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17033:7:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 3990,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3965,
                                    "src": "17042:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                      "typeString": "address[] memory"
                                    }
                                  },
                                  "id": 3994,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 3993,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 3991,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3971,
                                      "src": "17047:1:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 3992,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17051:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "17047:5:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "17042:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "id": 3995,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "17032:22:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_address_$_t_address_$",
                                "typeString": "tuple(address,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "16998:56:3"
                          },
                          {
                            "assignments": [
                              3998
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 3998,
                                "mutability": "mutable",
                                "name": "pair",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4079,
                                "src": "17069:16:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                  "typeString": "contract IFeSwapPair"
                                },
                                "typeName": {
                                  "contractScope": null,
                                  "id": 3997,
                                  "name": "IFeSwapPair",
                                  "nodeType": "UserDefinedTypeName",
                                  "referencedDeclaration": 4947,
                                  "src": "17069:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4007,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4002,
                                      "name": "factory",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 2246,
                                      "src": "17122:7:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 4003,
                                      "name": "input",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3984,
                                      "src": "17131:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    },
                                    {
                                      "argumentTypes": null,
                                      "id": 4004,
                                      "name": "output",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3986,
                                      "src": "17138:6:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      },
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4000,
                                      "name": "FeSwapLibrary",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6210,
                                      "src": "17100:13:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                        "typeString": "type(library FeSwapLibrary)"
                                      }
                                    },
                                    "id": 4001,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "pairFor",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5522,
                                    "src": "17100:21:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                      "typeString": "function (address,address,address) pure returns (address)"
                                    }
                                  },
                                  "id": 4005,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17100:45:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 3999,
                                "name": "IFeSwapPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4947,
                                "src": "17088:11:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                  "typeString": "type(contract IFeSwapPair)"
                                }
                              },
                              "id": 4006,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17088:58:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                "typeString": "contract IFeSwapPair"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "17069:77:3"
                          },
                          {
                            "assignments": [
                              4009
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4009,
                                "mutability": "mutable",
                                "name": "amountInput",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4079,
                                "src": "17161:16:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4008,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17161:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4010,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "17161:16:3"
                          },
                          {
                            "assignments": [
                              4012
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4012,
                                "mutability": "mutable",
                                "name": "amountOutput",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4079,
                                "src": "17192:17:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 4011,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17192:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4013,
                            "initialValue": null,
                            "nodeType": "VariableDeclarationStatement",
                            "src": "17192:17:3"
                          },
                          {
                            "id": 4046,
                            "nodeType": "Block",
                            "src": "17224:331:3",
                            "statements": [
                              {
                                "assignments": [
                                  4015,
                                  4017,
                                  null,
                                  null
                                ],
                                "declarations": [
                                  {
                                    "constant": false,
                                    "id": 4015,
                                    "mutability": "mutable",
                                    "name": "reserveInput",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 4046,
                                    "src": "17286:17:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 4014,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "17286:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  },
                                  {
                                    "constant": false,
                                    "id": 4017,
                                    "mutability": "mutable",
                                    "name": "reserveOutput",
                                    "nodeType": "VariableDeclaration",
                                    "overrides": null,
                                    "scope": 4046,
                                    "src": "17305:18:3",
                                    "stateVariable": false,
                                    "storageLocation": "default",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "typeName": {
                                      "id": 4016,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "17305:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "value": null,
                                    "visibility": "internal"
                                  },
                                  null,
                                  null
                                ],
                                "id": 4021,
                                "initialValue": {
                                  "argumentTypes": null,
                                  "arguments": [],
                                  "expression": {
                                    "argumentTypes": [],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4018,
                                      "name": "pair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3998,
                                      "src": "17330:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                        "typeString": "contract IFeSwapPair"
                                      }
                                    },
                                    "id": 4019,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "getReserves",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4866,
                                    "src": "17330:16:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                                      "typeString": "function () view external returns (uint112,uint112,uint32,uint256)"
                                    }
                                  },
                                  "id": 4020,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17330:18:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                                    "typeString": "tuple(uint112,uint112,uint32,uint256)"
                                  }
                                },
                                "nodeType": "VariableDeclarationStatement",
                                "src": "17285:63:3"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4035,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 4022,
                                    "name": "amountInput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4009,
                                    "src": "17367:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4033,
                                        "name": "reserveInput",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4015,
                                        "src": "17424:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 4029,
                                                "name": "pair",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3998,
                                                "src": "17413:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                                  "typeString": "contract IFeSwapPair"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                                  "typeString": "contract IFeSwapPair"
                                                }
                                              ],
                                              "id": 4028,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "lValueRequested": false,
                                              "nodeType": "ElementaryTypeNameExpression",
                                              "src": "17405:7:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_address_$",
                                                "typeString": "type(address)"
                                              },
                                              "typeName": {
                                                "id": 4027,
                                                "name": "address",
                                                "nodeType": "ElementaryTypeName",
                                                "src": "17405:7:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": null,
                                                  "typeString": null
                                                }
                                              }
                                            },
                                            "id": 4030,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17405:13:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "arguments": [
                                              {
                                                "argumentTypes": null,
                                                "id": 4024,
                                                "name": "input",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 3984,
                                                "src": "17388:5:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              }
                                            ],
                                            "expression": {
                                              "argumentTypes": [
                                                {
                                                  "typeIdentifier": "t_address",
                                                  "typeString": "address"
                                                }
                                              ],
                                              "id": 4023,
                                              "name": "IERC20",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 4536,
                                              "src": "17381:6:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                                "typeString": "type(contract IERC20)"
                                              }
                                            },
                                            "id": 4025,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "kind": "typeConversion",
                                            "lValueRequested": false,
                                            "names": [],
                                            "nodeType": "FunctionCall",
                                            "src": "17381:13:3",
                                            "tryCall": false,
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_contract$_IERC20_$4536",
                                              "typeString": "contract IERC20"
                                            }
                                          },
                                          "id": 4026,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "balanceOf",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 4497,
                                          "src": "17381:23:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                            "typeString": "function (address) view external returns (uint256)"
                                          }
                                        },
                                        "id": 4031,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "17381:38:3",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 4032,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sub",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6680,
                                      "src": "17381:42:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4034,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17381:56:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17367:70:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4036,
                                "nodeType": "ExpressionStatement",
                                "src": "17367:70:3"
                              },
                              {
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4044,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 4037,
                                    "name": "amountOutput",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4012,
                                    "src": "17456:12:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 4040,
                                        "name": "amountInput",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4009,
                                        "src": "17498:11:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 4041,
                                        "name": "reserveInput",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4015,
                                        "src": "17511:12:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 4042,
                                        "name": "reserveOutput",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4017,
                                        "src": "17525:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 4038,
                                        "name": "FeSwapLibrary",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6210,
                                        "src": "17471:13:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                          "typeString": "type(library FeSwapLibrary)"
                                        }
                                      },
                                      "id": 4039,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "getAmountOut",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 5648,
                                      "src": "17471:26:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                        "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 4043,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "17471:68:3",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "17456:83:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4045,
                                "nodeType": "ExpressionStatement",
                                "src": "17456:83:3"
                              }
                            ]
                          },
                          {
                            "assignments": [
                              4048
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 4048,
                                "mutability": "mutable",
                                "name": "to",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 4079,
                                "src": "17569:10:3",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 4047,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "17569:7:3",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 4067,
                            "initialValue": {
                              "argumentTypes": null,
                              "condition": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4054,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 4049,
                                  "name": "i",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3971,
                                  "src": "17582:1:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4053,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4050,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3965,
                                      "src": "17586:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4051,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "17586:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "32",
                                    "id": 4052,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "17600:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_2_by_1",
                                      "typeString": "int_const 2"
                                    },
                                    "value": "2"
                                  },
                                  "src": "17586:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "17582:19:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bool",
                                  "typeString": "bool"
                                }
                              },
                              "falseExpression": {
                                "argumentTypes": null,
                                "id": 4065,
                                "name": "_to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 3967,
                                "src": "17658:3:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 4066,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "Conditional",
                              "src": "17582:79:3",
                              "trueExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4057,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2246,
                                    "src": "17626:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 4058,
                                    "name": "output",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 3986,
                                    "src": "17635:6:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4059,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 3965,
                                      "src": "17643:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                        "typeString": "address[] memory"
                                      }
                                    },
                                    "id": 4063,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 4062,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 4060,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 3971,
                                        "src": "17648:1:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "+",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 4061,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "17652:1:3",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "17648:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "17643:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4055,
                                    "name": "FeSwapLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6210,
                                    "src": "17604:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                      "typeString": "type(library FeSwapLibrary)"
                                    }
                                  },
                                  "id": 4056,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5522,
                                  "src": "17604:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 4064,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "17604:51:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "17569:92:3"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4071,
                                  "name": "amountOutput",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4012,
                                  "src": "17686:12:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 4072,
                                  "name": "to",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4048,
                                  "src": "17700:2:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 4075,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "17714:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      }
                                    ],
                                    "id": 4074,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "NewExpression",
                                    "src": "17704:9:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                      "typeString": "function (uint256) pure returns (bytes memory)"
                                    },
                                    "typeName": {
                                      "id": 4073,
                                      "name": "bytes",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "17708:5:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_storage_ptr",
                                        "typeString": "bytes"
                                      }
                                    }
                                  },
                                  "id": 4076,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "17704:12:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes_memory_ptr",
                                    "typeString": "bytes memory"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 4068,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 3998,
                                  "src": "17676:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 4070,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swap",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4911,
                                "src": "17676:9:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_address_$_t_bytes_memory_ptr_$returns$__$",
                                  "typeString": "function (uint256,address,bytes memory) external"
                                }
                              },
                              "id": 4077,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "17676:41:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 4078,
                            "nodeType": "ExpressionStatement",
                            "src": "17676:41:3"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 3979,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 3974,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 3971,
                          "src": "16957:1:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 3978,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 3975,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 3965,
                              "src": "16961:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                                "typeString": "address[] memory"
                              }
                            },
                            "id": 3976,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "16961:11:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 3977,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "16975:1:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "16961:15:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "16957:19:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 4080,
                      "initializationExpression": {
                        "assignments": [
                          3971
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 3971,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 4080,
                            "src": "16945:6:3",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 3970,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "16945:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 3973,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 3972,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "16954:1:3",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "16945:10:3"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 3981,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "16978:3:3",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 3980,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3971,
                            "src": "16978:1:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 3982,
                        "nodeType": "ExpressionStatement",
                        "src": "16978:3:3"
                      },
                      "nodeType": "ForStatement",
                      "src": "16940:789:3"
                    }
                  ]
                },
                "documentation": null,
                "id": 4082,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_swapTokensFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 3968,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 3965,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4082,
                      "src": "16876:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_memory_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 3963,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "16876:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 3964,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "16876:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 3967,
                      "mutability": "mutable",
                      "name": "_to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4082,
                      "src": "16899:11:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 3966,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "16899:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "16875:36:3"
                },
                "returnParameters": {
                  "id": 3969,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "16929:0:3"
                },
                "scope": 4452,
                "src": "16842:894:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "internal"
              },
              {
                "baseFunctions": [
                  5278
                ],
                "body": {
                  "id": 4160,
                  "nodeType": "Block",
                  "src": "17972:454:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4103,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4089,
                              "src": "18029:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 4105,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4104,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "18034:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "18029:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4106,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "18038:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4107,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "18038:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4110,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2246,
                                "src": "18072:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4111,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4089,
                                  "src": "18081:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4113,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4112,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18086:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18081:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4114,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4089,
                                  "src": "18090:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4116,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4115,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "18095:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18090:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4108,
                                "name": "FeSwapLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6210,
                                "src": "18050:13:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                  "typeString": "type(library FeSwapLibrary)"
                                }
                              },
                              "id": 4109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5522,
                              "src": "18050:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4117,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18050:48:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4118,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4084,
                            "src": "18100:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4100,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "17983:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6843,
                          "src": "17983:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 4119,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "17983:136:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4120,
                      "nodeType": "ExpressionStatement",
                      "src": "17983:136:3"
                    },
                    {
                      "assignments": [
                        4122
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4122,
                          "mutability": "mutable",
                          "name": "balanceBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4160,
                          "src": "18130:18:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4121,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "18130:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4134,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4132,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4091,
                            "src": "18191:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4124,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4089,
                                  "src": "18158:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4129,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4128,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4125,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4089,
                                      "src": "18163:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4126,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "18163:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 4127,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18177:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "18163:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18158:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4123,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4536,
                              "src": "18151:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 4130,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18151:29:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4536",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4131,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4497,
                          "src": "18151:39:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4133,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18151:43:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "18130:64:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4136,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4089,
                            "src": "18230:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4137,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4091,
                            "src": "18236:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4135,
                          "name": "_swapTokensFeeOnTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4082,
                          "src": "18205:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address[] memory,address)"
                          }
                        },
                        "id": 4138,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18205:34:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4139,
                      "nodeType": "ExpressionStatement",
                      "src": "18205:34:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4156,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4153,
                                  "name": "balanceBefore",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4122,
                                  "src": "18320:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4150,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4091,
                                      "src": "18312:2:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 4142,
                                            "name": "path",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4089,
                                            "src": "18279:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 4147,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4146,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4143,
                                                "name": "path",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4089,
                                                "src": "18284:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                  "typeString": "address[] calldata"
                                                }
                                              },
                                              "id": 4144,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "18284:11:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "31",
                                              "id": 4145,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "18298:1:3",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "18284:15:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "18279:21:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4141,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4536,
                                        "src": "18272:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 4148,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "18272:29:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4536",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 4149,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4497,
                                    "src": "18272:39:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 4151,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "18272:43:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4152,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6680,
                                "src": "18272:47:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4154,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18272:62:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4155,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4086,
                              "src": "18338:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "18272:78:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 4157,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18365:42:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 4140,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "18250:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18250:168:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4159,
                      "nodeType": "ExpressionStatement",
                      "src": "18250:168:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "3d221b20",
                "id": 4161,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4097,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4093,
                        "src": "17962:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4098,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4096,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "17955:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "17955:16:3"
                  }
                ],
                "name": "swapExactTokensForTokensFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4095,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "17946:8:3"
                },
                "parameters": {
                  "id": 4094,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4084,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4161,
                      "src": "17801:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4083,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17801:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4086,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4161,
                      "src": "17825:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4085,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17825:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4089,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4161,
                      "src": "17853:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4087,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "17853:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4088,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "17853:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4091,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4161,
                      "src": "17887:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4090,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "17887:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4093,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4161,
                      "src": "17908:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4092,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "17908:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "17790:138:3"
                },
                "returnParameters": {
                  "id": 4099,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "17972:0:3"
                },
                "scope": 4452,
                "src": "17744:682:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5290
                ],
                "body": {
                  "id": 4257,
                  "nodeType": "Block",
                  "src": "18691:556:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4182,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4178,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4166,
                                "src": "18710:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 4180,
                              "indexExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 4179,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "18715:1:3",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "18710:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4181,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "18721:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "18710:15:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e56414c49445f50415448",
                            "id": 4183,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "18727:28:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            },
                            "value": "FeSwapRouter: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            }
                          ],
                          "id": 4177,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "18702:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4184,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18702:54:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4185,
                      "nodeType": "ExpressionStatement",
                      "src": "18702:54:3"
                    },
                    {
                      "assignments": [
                        4187
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4187,
                          "mutability": "mutable",
                          "name": "amountIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4257,
                          "src": "18767:13:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4186,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "18767:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4190,
                      "initialValue": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "id": 4188,
                          "name": "msg",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -15,
                          "src": "18783:3:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_magic_message",
                            "typeString": "msg"
                          }
                        },
                        "id": 4189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "value",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "18783:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "18767:25:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4192,
                                  "name": "WETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 2252,
                                  "src": "18809:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 4191,
                                "name": "IWETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5420,
                                "src": "18803:5:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                  "typeString": "type(contract IWETH)"
                                }
                              },
                              "id": 4193,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "18803:11:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IWETH_$5420",
                                "typeString": "contract IWETH"
                              }
                            },
                            "id": 4194,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "deposit",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 5405,
                            "src": "18803:19:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_payable$__$returns$__$",
                              "typeString": "function () payable external"
                            }
                          },
                          "id": 4196,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 4195,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4187,
                              "src": "18830:8:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "18803:36:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_payable$__$returns$__$value",
                            "typeString": "function () payable external"
                          }
                        },
                        "id": 4197,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18803:38:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4198,
                      "nodeType": "ExpressionStatement",
                      "src": "18803:38:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4206,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2246,
                                    "src": "18902:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4207,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4166,
                                      "src": "18911:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4209,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 4208,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18916:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18911:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 4210,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4166,
                                      "src": "18920:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4212,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 4211,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "18925:1:3",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "18920:7:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4204,
                                    "name": "FeSwapLibrary",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6210,
                                    "src": "18880:13:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                      "typeString": "type(library FeSwapLibrary)"
                                    }
                                  },
                                  "id": 4205,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "pairFor",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5522,
                                  "src": "18880:21:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                    "typeString": "function (address,address,address) pure returns (address)"
                                  }
                                },
                                "id": 4213,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18880:48:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 4214,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4187,
                                "src": "18930:8:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 4201,
                                    "name": "WETH",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 2252,
                                    "src": "18865:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 4200,
                                  "name": "IWETH",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5420,
                                  "src": "18859:5:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                    "typeString": "type(contract IWETH)"
                                  }
                                },
                                "id": 4202,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "18859:11:3",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_IWETH_$5420",
                                  "typeString": "contract IWETH"
                                }
                              },
                              "id": 4203,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "transfer",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5414,
                              "src": "18859:20:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_external_nonpayable$_t_address_$_t_uint256_$returns$_t_bool_$",
                                "typeString": "function (address,uint256) external returns (bool)"
                              }
                            },
                            "id": 4215,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18859:80:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 4199,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "18852:6:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 4216,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18852:88:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4217,
                      "nodeType": "ExpressionStatement",
                      "src": "18852:88:3"
                    },
                    {
                      "assignments": [
                        4219
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4219,
                          "mutability": "mutable",
                          "name": "balanceBefore",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4257,
                          "src": "18951:18:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4218,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "18951:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4231,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4229,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4168,
                            "src": "19012:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4221,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4166,
                                  "src": "18979:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4226,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 4225,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 4222,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4166,
                                      "src": "18984:4:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 4223,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "length",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": null,
                                    "src": "18984:11:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 4224,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "18998:1:3",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "18984:15:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "18979:21:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4220,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4536,
                              "src": "18972:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 4227,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "18972:29:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4536",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4228,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4497,
                          "src": "18972:39:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "18972:43:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "18951:64:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4233,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4166,
                            "src": "19051:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4234,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4168,
                            "src": "19057:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "id": 4232,
                          "name": "_swapTokensFeeOnTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4082,
                          "src": "19026:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address[] memory,address)"
                          }
                        },
                        "id": 4235,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19026:34:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4236,
                      "nodeType": "ExpressionStatement",
                      "src": "19026:34:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4253,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 4250,
                                  "name": "balanceBefore",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4219,
                                  "src": "19141:13:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 4247,
                                      "name": "to",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 4168,
                                      "src": "19133:2:3",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 4239,
                                            "name": "path",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 4166,
                                            "src": "19100:4:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                              "typeString": "address[] calldata"
                                            }
                                          },
                                          "id": 4244,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 4243,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 4240,
                                                "name": "path",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 4166,
                                                "src": "19105:4:3",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                                  "typeString": "address[] calldata"
                                                }
                                              },
                                              "id": 4241,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "length",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": null,
                                              "src": "19105:11:3",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "-",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "hexValue": "31",
                                              "id": 4242,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": true,
                                              "kind": "number",
                                              "lValueRequested": false,
                                              "nodeType": "Literal",
                                              "src": "19119:1:3",
                                              "subdenomination": null,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_rational_1_by_1",
                                                "typeString": "int_const 1"
                                              },
                                              "value": "1"
                                            },
                                            "src": "19105:15:3",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "nodeType": "IndexAccess",
                                          "src": "19100:21:3",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        ],
                                        "id": 4238,
                                        "name": "IERC20",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 4536,
                                        "src": "19093:6:3",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                          "typeString": "type(contract IERC20)"
                                        }
                                      },
                                      "id": 4245,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "19093:29:3",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_IERC20_$4536",
                                        "typeString": "contract IERC20"
                                      }
                                    },
                                    "id": 4246,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "balanceOf",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 4497,
                                    "src": "19093:39:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                                      "typeString": "function (address) view external returns (uint256)"
                                    }
                                  },
                                  "id": 4248,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "19093:43:3",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 4249,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6680,
                                "src": "19093:47:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 4251,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "19093:62:3",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4252,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4163,
                              "src": "19159:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19093:78:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 4254,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19186:42:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 4237,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "19071:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4255,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19071:168:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4256,
                      "nodeType": "ExpressionStatement",
                      "src": "19071:168:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d57b57a5",
                "id": 4258,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4174,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4170,
                        "src": "18676:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4175,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4173,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "18669:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "18669:16:3"
                  }
                ],
                "name": "swapExactETHForTokensFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4172,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "18634:8:3"
                },
                "parameters": {
                  "id": 4171,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4163,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4258,
                      "src": "18486:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4162,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18486:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4166,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4258,
                      "src": "18514:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4164,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "18514:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4165,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "18514:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4168,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4258,
                      "src": "18548:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4167,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "18548:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4170,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4258,
                      "src": "18569:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4169,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "18569:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "18475:114:3"
                },
                "returnParameters": {
                  "id": 4176,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "18691:0:3"
                },
                "scope": 4452,
                "src": "18432:815:3",
                "stateMutability": "payable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5304
                ],
                "body": {
                  "id": 4350,
                  "nodeType": "Block",
                  "src": "19519:542:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "id": 4284,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 4277,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4265,
                                "src": "19538:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 4282,
                              "indexExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 4281,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 4278,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4265,
                                    "src": "19543:4:3",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 4279,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "length",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "19543:11:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4280,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19557:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "19543:15:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "19538:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "==",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4283,
                              "name": "WETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 2252,
                              "src": "19563:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "src": "19538:29:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e56414c49445f50415448",
                            "id": 4285,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19569:28:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            },
                            "value": "FeSwapRouter: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_0bbfad9fac251d6ea5461171fec78244fc2195b6da8b1ee228b63635347f0742",
                              "typeString": "literal_string \"FeSwapRouter: INVALID_PATH\""
                            }
                          ],
                          "id": 4276,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "19530:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4286,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19530:68:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4287,
                      "nodeType": "ExpressionStatement",
                      "src": "19530:68:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 4291,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4265,
                              "src": "19655:4:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 4293,
                            "indexExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 4292,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "19660:1:3",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "19655:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 4294,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "19664:3:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 4295,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "19664:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4298,
                                "name": "factory",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2246,
                                "src": "19698:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4299,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4265,
                                  "src": "19707:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4301,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "30",
                                  "id": 4300,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19712:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_0_by_1",
                                    "typeString": "int_const 0"
                                  },
                                  "value": "0"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19707:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 4302,
                                  "name": "path",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 4265,
                                  "src": "19716:4:3",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                    "typeString": "address[] calldata"
                                  }
                                },
                                "id": 4304,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 4303,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "19721:1:3",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "19716:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 4296,
                                "name": "FeSwapLibrary",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6210,
                                "src": "19676:13:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                                  "typeString": "type(library FeSwapLibrary)"
                                }
                              },
                              "id": 4297,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "pairFor",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 5522,
                              "src": "19676:21:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                                "typeString": "function (address,address,address) pure returns (address)"
                              }
                            },
                            "id": 4305,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19676:48:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4306,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4260,
                            "src": "19726:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4288,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "19609:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4290,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferFrom",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6843,
                          "src": "19609:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,address,uint256)"
                          }
                        },
                        "id": 4307,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19609:136:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4308,
                      "nodeType": "ExpressionStatement",
                      "src": "19609:136:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4310,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4265,
                            "src": "19781:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4313,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "19795:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              ],
                              "id": 4312,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "19787:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4311,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "19787:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4314,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19787:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "id": 4309,
                          "name": "_swapTokensFeeOnTransfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 4082,
                          "src": "19756:24:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$returns$__$",
                            "typeString": "function (address[] memory,address)"
                          }
                        },
                        "id": 4315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19756:45:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4316,
                      "nodeType": "ExpressionStatement",
                      "src": "19756:45:3"
                    },
                    {
                      "assignments": [
                        4318
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 4318,
                          "mutability": "mutable",
                          "name": "amountOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 4350,
                          "src": "19812:14:3",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 4317,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "19812:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 4328,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4325,
                                "name": "this",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -28,
                                "src": "19860:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_contract$_FeSwapRouter_$4452",
                                  "typeString": "contract FeSwapRouter"
                                }
                              ],
                              "id": 4324,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "19852:7:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 4323,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "19852:7:3",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 4326,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19852:13:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4320,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "19836:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4319,
                              "name": "IERC20",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4536,
                              "src": "19829:6:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IERC20_$4536_$",
                                "typeString": "type(contract IERC20)"
                              }
                            },
                            "id": 4321,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19829:12:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IERC20_$4536",
                              "typeString": "contract IERC20"
                            }
                          },
                          "id": 4322,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "balanceOf",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4497,
                          "src": "19829:22:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$_t_address_$returns$_t_uint256_$",
                            "typeString": "function (address) view external returns (uint256)"
                          }
                        },
                        "id": 4327,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19829:37:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "19812:54:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 4332,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 4330,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4318,
                              "src": "19885:9:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 4331,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4262,
                              "src": "19898:12:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "19885:25:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "466553776170526f757465723a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 4333,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "19912:42:3",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7311211db305b605b2af5fb79143be9bb1258290420741330e9f587ac4a895ab",
                              "typeString": "literal_string \"FeSwapRouter: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 4329,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "19877:7:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 4334,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19877:78:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4335,
                      "nodeType": "ExpressionStatement",
                      "src": "19877:78:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4340,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4318,
                            "src": "19987:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 4337,
                                "name": "WETH",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 2252,
                                "src": "19972:4:3",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 4336,
                              "name": "IWETH",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5420,
                              "src": "19966:5:3",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IWETH_$5420_$",
                                "typeString": "type(contract IWETH)"
                              }
                            },
                            "id": 4338,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "19966:11:3",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IWETH_$5420",
                              "typeString": "contract IWETH"
                            }
                          },
                          "id": 4339,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "withdraw",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5419,
                          "src": "19966:20:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256) external"
                          }
                        },
                        "id": 4341,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "19966:31:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4342,
                      "nodeType": "ExpressionStatement",
                      "src": "19966:31:3"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4346,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4267,
                            "src": "20039:2:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4347,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4318,
                            "src": "20043:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4343,
                            "name": "TransferHelper",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6869,
                            "src": "20008:14:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                              "typeString": "type(library TransferHelper)"
                            }
                          },
                          "id": 4345,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "safeTransferETH",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6868,
                          "src": "20008:30:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 4348,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20008:45:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 4349,
                      "nodeType": "ExpressionStatement",
                      "src": "20008:45:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a59600db",
                "id": 4351,
                "implemented": true,
                "kind": "function",
                "modifiers": [
                  {
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "id": 4273,
                        "name": "deadline",
                        "nodeType": "Identifier",
                        "overloadedDeclarations": [],
                        "referencedDeclaration": 4269,
                        "src": "19504:8:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      }
                    ],
                    "id": 4274,
                    "modifierName": {
                      "argumentTypes": null,
                      "id": 4272,
                      "name": "ensure",
                      "nodeType": "Identifier",
                      "overloadedDeclarations": [],
                      "referencedDeclaration": 2266,
                      "src": "19497:6:3",
                      "typeDescriptions": {
                        "typeIdentifier": "t_modifier$_t_uint256_$",
                        "typeString": "modifier (uint256)"
                      }
                    },
                    "nodeType": "ModifierInvocation",
                    "src": "19497:16:3"
                  }
                ],
                "name": "swapExactTokensForETHFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4271,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "19479:8:3"
                },
                "parameters": {
                  "id": 4270,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4260,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4351,
                      "src": "19307:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4259,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "19307:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4262,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4351,
                      "src": "19331:17:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4261,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "19331:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4265,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4351,
                      "src": "19359:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4263,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "19359:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4264,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "19359:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4267,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4351,
                      "src": "19393:10:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4266,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "19393:7:3",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4269,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4351,
                      "src": "19414:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4268,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "19414:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "19296:138:3"
                },
                "returnParameters": {
                  "id": 4275,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "19519:0:3"
                },
                "scope": 4452,
                "src": "19253:808:3",
                "stateMutability": "nonpayable",
                "virtual": true,
                "visibility": "external"
              },
              {
                "baseFunctions": [
                  5315
                ],
                "body": {
                  "id": 4370,
                  "nodeType": "Block",
                  "src": "20240:74:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4365,
                            "name": "amountA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4353,
                            "src": "20278:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4366,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4355,
                            "src": "20287:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4367,
                            "name": "reserveB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4357,
                            "src": "20297:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4363,
                            "name": "FeSwapLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6210,
                            "src": "20258:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                              "typeString": "type(library FeSwapLibrary)"
                            }
                          },
                          "id": 4364,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "quote",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5598,
                          "src": "20258:19:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4368,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20258:48:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 4362,
                      "id": 4369,
                      "nodeType": "Return",
                      "src": "20251:55:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ad615dec",
                "id": 4371,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4359,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "20202:8:3"
                },
                "parameters": {
                  "id": 4358,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4353,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4371,
                      "src": "20120:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4352,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20120:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4355,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4371,
                      "src": "20134:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4354,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20134:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4357,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4371,
                      "src": "20149:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4356,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20149:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "20119:44:3"
                },
                "returnParameters": {
                  "id": 4362,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4361,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4371,
                      "src": "20220:12:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4360,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20220:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "20219:14:3"
                },
                "scope": 4452,
                "src": "20105:209:3",
                "stateMutability": "pure",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5326
                ],
                "body": {
                  "id": 4390,
                  "nodeType": "Block",
                  "src": "20468:85:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4385,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4373,
                            "src": "20513:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4386,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4375,
                            "src": "20523:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4387,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4377,
                            "src": "20534:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4383,
                            "name": "FeSwapLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6210,
                            "src": "20486:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                              "typeString": "type(library FeSwapLibrary)"
                            }
                          },
                          "id": 4384,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5648,
                          "src": "20486:26:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4388,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20486:59:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 4382,
                      "id": 4389,
                      "nodeType": "Return",
                      "src": "20479:66:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "054d50d4",
                "id": 4391,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4379,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "20429:8:3"
                },
                "parameters": {
                  "id": 4378,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4373,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4391,
                      "src": "20344:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4372,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20344:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4375,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4391,
                      "src": "20359:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4374,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20359:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4377,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4391,
                      "src": "20375:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4376,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20375:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "20343:48:3"
                },
                "returnParameters": {
                  "id": 4382,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4381,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4391,
                      "src": "20447:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4380,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20447:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "20446:16:3"
                },
                "scope": 4452,
                "src": "20322:231:3",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5337
                ],
                "body": {
                  "id": 4410,
                  "nodeType": "Block",
                  "src": "20706:85:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4405,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4393,
                            "src": "20750:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4406,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4395,
                            "src": "20761:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4407,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4397,
                            "src": "20772:10:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4403,
                            "name": "FeSwapLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6210,
                            "src": "20724:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                              "typeString": "type(library FeSwapLibrary)"
                            }
                          },
                          "id": 4404,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getAmountIn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5702,
                          "src": "20724:25:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 4408,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20724:59:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 4402,
                      "id": 4409,
                      "nodeType": "Return",
                      "src": "20717:66:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "85f8c259",
                "id": 4411,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4399,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "20668:8:3"
                },
                "parameters": {
                  "id": 4398,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4393,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4411,
                      "src": "20582:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4392,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20582:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4395,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4411,
                      "src": "20598:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4394,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20598:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4397,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4411,
                      "src": "20614:15:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4396,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20614:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "20581:49:3"
                },
                "returnParameters": {
                  "id": 4402,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4401,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4411,
                      "src": "20686:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4400,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20686:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "20685:15:3"
                },
                "scope": 4452,
                "src": "20561:230:3",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5348
                ],
                "body": {
                  "id": 4430,
                  "nodeType": "Block",
                  "src": "20950:83:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4425,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "21001:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4426,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4413,
                            "src": "21010:8:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4427,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4416,
                            "src": "21020:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4423,
                            "name": "FeSwapLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6210,
                            "src": "20968:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                              "typeString": "type(library FeSwapLibrary)"
                            }
                          },
                          "id": 4424,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "estimateAmountsOut",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6030,
                          "src": "20968:32:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] calldata) view returns (uint256[] memory)"
                          }
                        },
                        "id": 4428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "20968:57:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "functionReturnParameters": 4422,
                      "id": 4429,
                      "nodeType": "Return",
                      "src": "20961:64:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "eef40f31",
                "id": 4431,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "estimateAmountsOut",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4418,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "20904:8:3"
                },
                "parameters": {
                  "id": 4417,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4413,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4431,
                      "src": "20827:13:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4412,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "20827:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4416,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4431,
                      "src": "20842:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4414,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "20842:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4415,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "20842:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "20826:40:3"
                },
                "returnParameters": {
                  "id": 4422,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4421,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4431,
                      "src": "20922:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4419,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "20922:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4420,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "20922:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "20921:23:3"
                },
                "scope": 4452,
                "src": "20799:234:3",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              },
              {
                "baseFunctions": [
                  5359
                ],
                "body": {
                  "id": 4450,
                  "nodeType": "Block",
                  "src": "21192:83:3",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 4445,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 2246,
                            "src": "21242:7:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4446,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4433,
                            "src": "21251:9:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 4447,
                            "name": "path",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 4436,
                            "src": "21262:4:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            {
                              "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                              "typeString": "address[] calldata"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 4443,
                            "name": "FeSwapLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6210,
                            "src": "21210:13:3",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                              "typeString": "type(library FeSwapLibrary)"
                            }
                          },
                          "id": 4444,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "estimateAmountsIn",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6209,
                          "src": "21210:31:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_uint256_$_t_array$_t_address_$dyn_calldata_ptr_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                            "typeString": "function (address,uint256,address[] calldata) view returns (uint256[] memory)"
                          }
                        },
                        "id": 4448,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "21210:57:3",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "functionReturnParameters": 4442,
                      "id": 4449,
                      "nodeType": "Return",
                      "src": "21203:64:3"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2e1db143",
                "id": 4451,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "estimateAmountsIn",
                "nodeType": "FunctionDefinition",
                "overrides": {
                  "id": 4438,
                  "nodeType": "OverrideSpecifier",
                  "overrides": [],
                  "src": "21146:8:3"
                },
                "parameters": {
                  "id": 4437,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4433,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4451,
                      "src": "21068:14:3",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4432,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "21068:4:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4436,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4451,
                      "src": "21084:23:3",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4434,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "21084:7:3",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 4435,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "21084:9:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "21067:41:3"
                },
                "returnParameters": {
                  "id": 4442,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4441,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4451,
                      "src": "21164:21:3",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 4439,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "21164:4:3",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 4440,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "21164:6:3",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "21163:23:3"
                },
                "scope": 4452,
                "src": "21041:234:3",
                "stateMutability": "view",
                "virtual": true,
                "visibility": "public"
              }
            ],
            "scope": 4453,
            "src": "976:20304:3"
          }
        ],
        "src": "37:21245:3"
      }
    },
    "contracts/interfaces/IERC20.sol": {
      "id": 4,
      "AST": {
        "absolutePath": "contracts/interfaces/IERC20.sol",
        "exportedSymbols": {
          "IERC20": [
            4536
          ]
        },
        "id": 4537,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 4454,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:4"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 4536,
            "linearizedBaseContracts": [
              4536
            ],
            "name": "IERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 4462,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4461,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4456,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4462,
                      "src": "104:21:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4455,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "104:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4458,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4462,
                      "src": "127:23:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4457,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "127:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4460,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4462,
                      "src": "152:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4459,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "152:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "103:60:4"
                },
                "src": "89:75:4"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4470,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4469,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4464,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4470,
                      "src": "185:20:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4463,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "185:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4466,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4470,
                      "src": "207:18:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4465,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "207:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4468,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4470,
                      "src": "227:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4467,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "227:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "184:54:4"
                },
                "src": "170:69:4"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "06fdde03",
                "id": 4475,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4471,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "260:2:4"
                },
                "returnParameters": {
                  "id": 4474,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4473,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4475,
                      "src": "286:13:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 4472,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "286:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "285:15:4"
                },
                "scope": 4536,
                "src": "247:54:4",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "95d89b41",
                "id": 4480,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4476,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "322:2:4"
                },
                "returnParameters": {
                  "id": 4479,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4478,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4480,
                      "src": "348:13:4",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 4477,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "348:6:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "347:15:4"
                },
                "scope": 4536,
                "src": "307:56:4",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "313ce567",
                "id": 4485,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4481,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "386:2:4"
                },
                "returnParameters": {
                  "id": 4484,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4483,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4485,
                      "src": "412:5:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4482,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "412:5:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "411:7:4"
                },
                "scope": 4536,
                "src": "369:50:4",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 4490,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4486,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "445:2:4"
                },
                "returnParameters": {
                  "id": 4489,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4488,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4490,
                      "src": "471:4:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4487,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "471:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "470:6:4"
                },
                "scope": 4536,
                "src": "425:52:4",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 4497,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4493,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4492,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4497,
                      "src": "502:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4491,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "502:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "501:15:4"
                },
                "returnParameters": {
                  "id": 4496,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4495,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4497,
                      "src": "540:4:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4494,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "540:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "539:6:4"
                },
                "scope": 4536,
                "src": "483:63:4",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 4506,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4502,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4499,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4506,
                      "src": "571:13:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4498,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "571:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4501,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4506,
                      "src": "586:15:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4500,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "586:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "570:32:4"
                },
                "returnParameters": {
                  "id": 4505,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4504,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4506,
                      "src": "626:4:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4503,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "626:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "625:6:4"
                },
                "scope": 4536,
                "src": "552:80:4",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 4515,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4511,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4508,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4515,
                      "src": "657:15:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4507,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "657:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4510,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4515,
                      "src": "674:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4509,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "674:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "656:29:4"
                },
                "returnParameters": {
                  "id": 4514,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4513,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4515,
                      "src": "704:4:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4512,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "704:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "703:6:4"
                },
                "scope": 4536,
                "src": "640:70:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 4524,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4520,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4517,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4524,
                      "src": "734:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4516,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "734:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4519,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4524,
                      "src": "746:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4518,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "746:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "733:24:4"
                },
                "returnParameters": {
                  "id": 4523,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4522,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4524,
                      "src": "776:4:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4521,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "776:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "775:6:4"
                },
                "scope": 4536,
                "src": "716:66:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 4535,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4531,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4526,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4535,
                      "src": "810:12:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4525,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "810:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4528,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4535,
                      "src": "824:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4527,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "824:7:4",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4530,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4535,
                      "src": "836:10:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4529,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "836:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "809:38:4"
                },
                "returnParameters": {
                  "id": 4534,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4533,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4535,
                      "src": "866:4:4",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4532,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "866:4:4",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "865:6:4"
                },
                "scope": 4536,
                "src": "788:84:4",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 4537,
            "src": "65:810:4"
          }
        ],
        "src": "37:840:4"
      }
    },
    "contracts/interfaces/IFeSwapCallee.sol": {
      "id": 5,
      "AST": {
        "absolutePath": "contracts/interfaces/IFeSwapCallee.sol",
        "exportedSymbols": {
          "IFeSwapCallee": [
            4548
          ]
        },
        "id": 4549,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 4538,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:5"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 4548,
            "linearizedBaseContracts": [
              4548
            ],
            "name": "IFeSwapCallee",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "387d768a",
                "id": 4547,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "FeSwapCall",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4545,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4540,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4547,
                      "src": "116:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4539,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "116:7:5",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4542,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4547,
                      "src": "132:14:5",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4541,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "132:4:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4544,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4547,
                      "src": "148:19:5",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 4543,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "148:5:5",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "115:53:5"
                },
                "returnParameters": {
                  "id": 4546,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "177:0:5"
                },
                "scope": 4548,
                "src": "96:82:5",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 4549,
            "src": "65:116:5"
          }
        ],
        "src": "37:146:5"
      }
    },
    "contracts/interfaces/IFeSwapERC20.sol": {
      "id": 6,
      "AST": {
        "absolutePath": "contracts/interfaces/IFeSwapERC20.sol",
        "exportedSymbols": {
          "IFeSwapERC20": [
            4666
          ]
        },
        "id": 4667,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 4550,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:6"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 4666,
            "linearizedBaseContracts": [
              4666
            ],
            "name": "IFeSwapERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 4558,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4557,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4552,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4558,
                      "src": "110:21:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4551,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "110:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4554,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4558,
                      "src": "133:23:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4553,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "133:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4556,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4558,
                      "src": "158:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4555,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "158:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "109:60:6"
                },
                "src": "95:75:6"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4566,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4565,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4560,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4566,
                      "src": "191:20:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4559,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "191:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4562,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4566,
                      "src": "213:18:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4561,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "213:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4564,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4566,
                      "src": "233:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4563,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "233:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "190:54:6"
                },
                "src": "176:69:6"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "06fdde03",
                "id": 4571,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "name",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4567,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "266:2:6"
                },
                "returnParameters": {
                  "id": 4570,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4569,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4571,
                      "src": "292:13:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 4568,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "292:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "291:15:6"
                },
                "scope": 4666,
                "src": "253:54:6",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "95d89b41",
                "id": 4576,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "symbol",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4572,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "328:2:6"
                },
                "returnParameters": {
                  "id": 4575,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4574,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4576,
                      "src": "354:13:6",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 4573,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "354:6:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "353:15:6"
                },
                "scope": 4666,
                "src": "313:56:6",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "313ce567",
                "id": 4581,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "decimals",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4577,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "392:2:6"
                },
                "returnParameters": {
                  "id": 4580,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4579,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4581,
                      "src": "418:5:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4578,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "418:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "417:7:6"
                },
                "scope": 4666,
                "src": "375:50:6",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 4586,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4582,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "451:2:6"
                },
                "returnParameters": {
                  "id": 4585,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4584,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4586,
                      "src": "477:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4583,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "477:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "476:6:6"
                },
                "scope": 4666,
                "src": "431:52:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "70a08231",
                "id": 4593,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "balanceOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4589,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4588,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4593,
                      "src": "508:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4587,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "508:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "507:15:6"
                },
                "returnParameters": {
                  "id": 4592,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4591,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4593,
                      "src": "546:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4590,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "546:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "545:6:6"
                },
                "scope": 4666,
                "src": "489:63:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "dd62ed3e",
                "id": 4602,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allowance",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4598,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4595,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4602,
                      "src": "577:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4594,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "577:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4597,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4602,
                      "src": "592:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4596,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "592:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "576:32:6"
                },
                "returnParameters": {
                  "id": 4601,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4600,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4602,
                      "src": "632:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4599,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "632:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "631:6:6"
                },
                "scope": 4666,
                "src": "558:80:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 4611,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4607,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4604,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4611,
                      "src": "663:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4603,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "663:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4606,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4611,
                      "src": "680:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4605,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "680:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "662:29:6"
                },
                "returnParameters": {
                  "id": 4610,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4609,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4611,
                      "src": "710:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4608,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "710:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "709:6:6"
                },
                "scope": 4666,
                "src": "646:70:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 4620,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4616,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4613,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4620,
                      "src": "740:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4612,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "740:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4615,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4620,
                      "src": "752:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4614,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "752:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "739:24:6"
                },
                "returnParameters": {
                  "id": 4619,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4618,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4620,
                      "src": "782:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4617,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "782:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "781:6:6"
                },
                "scope": 4666,
                "src": "722:66:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 4631,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4627,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4622,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4631,
                      "src": "816:12:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4621,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "816:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4624,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4631,
                      "src": "830:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4623,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "830:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4626,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4631,
                      "src": "842:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4625,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "842:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "815:38:6"
                },
                "returnParameters": {
                  "id": 4630,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4629,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4631,
                      "src": "872:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 4628,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "872:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "871:6:6"
                },
                "scope": 4666,
                "src": "794:84:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "3644e515",
                "id": 4636,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4632,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "911:2:6"
                },
                "returnParameters": {
                  "id": 4635,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4634,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4636,
                      "src": "937:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4633,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "937:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "936:9:6"
                },
                "scope": 4666,
                "src": "886:60:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "30adf81f",
                "id": 4641,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "PERMIT_TYPEHASH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4637,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "976:2:6"
                },
                "returnParameters": {
                  "id": 4640,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4639,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4641,
                      "src": "1002:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4638,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1002:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1001:9:6"
                },
                "scope": 4666,
                "src": "952:59:6",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7ecebe00",
                "id": 4648,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "nonces",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4644,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4643,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4648,
                      "src": "1033:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4642,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1033:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1032:15:6"
                },
                "returnParameters": {
                  "id": 4647,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4646,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4648,
                      "src": "1071:4:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4645,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1071:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1070:6:6"
                },
                "scope": 4666,
                "src": "1017:60:6",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 4665,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4663,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4650,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4665,
                      "src": "1101:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4649,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1101:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4652,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4665,
                      "src": "1116:15:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4651,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1116:7:6",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4654,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4665,
                      "src": "1133:10:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4653,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1133:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4656,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4665,
                      "src": "1145:13:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4655,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1145:4:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4658,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4665,
                      "src": "1160:7:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 4657,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1160:5:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4660,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4665,
                      "src": "1169:9:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4659,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1169:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4662,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4665,
                      "src": "1180:9:6",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 4661,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1180:7:6",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1100:90:6"
                },
                "returnParameters": {
                  "id": 4664,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1199:0:6"
                },
                "scope": 4666,
                "src": "1085:115:6",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 4667,
            "src": "65:1138:6"
          }
        ],
        "src": "37:1168:6"
      }
    },
    "contracts/interfaces/IFeSwapFactory.sol": {
      "id": 7,
      "AST": {
        "absolutePath": "contracts/interfaces/IFeSwapFactory.sol",
        "exportedSymbols": {
          "IFeSwapFactory": [
            4789
          ]
        },
        "id": 4790,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 4668,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:7"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 4789,
            "linearizedBaseContracts": [
              4789
            ],
            "name": "IFeSwapFactory",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 4680,
                "name": "PairCreated",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4679,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4670,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4680,
                      "src": "115:22:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4669,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "115:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4672,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4680,
                      "src": "139:22:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4671,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "139:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4674,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "pairAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4680,
                      "src": "163:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4673,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "163:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4676,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "pairABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4680,
                      "src": "180:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4675,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "180:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4678,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4680,
                      "src": "197:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4677,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "197:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "114:88:7"
                },
                "src": "97:106:7"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "017e7e58",
                "id": 4685,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "feeTo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4681,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "225:2:7"
                },
                "returnParameters": {
                  "id": 4684,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4683,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4685,
                      "src": "251:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4682,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "251:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "250:9:7"
                },
                "scope": 4789,
                "src": "211:49:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "0002eab7",
                "id": 4692,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getFeeInfo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4686,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "285:2:7"
                },
                "returnParameters": {
                  "id": 4691,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4688,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4692,
                      "src": "311:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4687,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "311:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4690,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4692,
                      "src": "320:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4689,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "320:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "310:18:7"
                },
                "scope": 4789,
                "src": "266:63:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "17d8ec7f",
                "id": 4697,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factoryAdmin",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4693,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "356:2:7"
                },
                "returnParameters": {
                  "id": 4696,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4695,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4697,
                      "src": "382:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4694,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "382:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "381:9:7"
                },
                "scope": 4789,
                "src": "335:56:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "687d5b7f",
                "id": 4702,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "routerFeSwap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4698,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "418:2:7"
                },
                "returnParameters": {
                  "id": 4701,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4700,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4702,
                      "src": "444:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4699,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "444:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "443:9:7"
                },
                "scope": 4789,
                "src": "397:56:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d5322488",
                "id": 4707,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "rateTriggerFactory",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4703,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "488:2:7"
                },
                "returnParameters": {
                  "id": 4706,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4705,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4707,
                      "src": "514:6:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4704,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "514:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "513:8:7"
                },
                "scope": 4789,
                "src": "461:61:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d886d63d",
                "id": 4712,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "rateCapArbitrage",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4708,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "555:2:7"
                },
                "returnParameters": {
                  "id": 4711,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4710,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4712,
                      "src": "581:6:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4709,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "581:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "580:8:7"
                },
                "scope": 4789,
                "src": "530:59:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "16fc2115",
                "id": 4717,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "rateProfitShare",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4713,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "624:2:7"
                },
                "returnParameters": {
                  "id": 4716,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4715,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4717,
                      "src": "650:6:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4714,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "650:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "649:8:7"
                },
                "scope": 4789,
                "src": "600:58:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "e6a43905",
                "id": 4726,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getPair",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4722,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4719,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4726,
                      "src": "684:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4718,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "684:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4721,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4726,
                      "src": "700:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4720,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "700:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "683:32:7"
                },
                "returnParameters": {
                  "id": 4725,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4724,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4726,
                      "src": "739:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4723,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "739:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "738:14:7"
                },
                "scope": 4789,
                "src": "667:86:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "1e3dd18b",
                "id": 4733,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allPairs",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4729,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4728,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4733,
                      "src": "777:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4727,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "777:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "776:6:7"
                },
                "returnParameters": {
                  "id": 4732,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4731,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4733,
                      "src": "806:12:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4730,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "806:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "805:14:7"
                },
                "scope": 4789,
                "src": "759:61:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "574f2ba3",
                "id": 4738,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "allPairsLength",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4734,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "849:2:7"
                },
                "returnParameters": {
                  "id": 4737,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4736,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4738,
                      "src": "875:4:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4735,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "875:4:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "874:6:7"
                },
                "scope": 4789,
                "src": "826:55:7",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "883d2730",
                "id": 4753,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "createUpdatePair",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4747,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4740,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4753,
                      "src": "915:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4739,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "915:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4742,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4753,
                      "src": "931:14:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4741,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "931:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4744,
                      "mutability": "mutable",
                      "name": "pairOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4753,
                      "src": "947:17:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4743,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "947:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4746,
                      "mutability": "mutable",
                      "name": "rateTrigger",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4753,
                      "src": "966:19:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4745,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "966:7:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "914:72:7"
                },
                "returnParameters": {
                  "id": 4752,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4749,
                      "mutability": "mutable",
                      "name": "pairAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4753,
                      "src": "1005:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4748,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1005:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4751,
                      "mutability": "mutable",
                      "name": "pairABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4753,
                      "src": "1021:15:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4750,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1021:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1004:33:7"
                },
                "scope": 4789,
                "src": "889:149:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "f46901ed",
                "id": 4758,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFeeTo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4756,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4755,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4758,
                      "src": "1064:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4754,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1064:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1063:9:7"
                },
                "returnParameters": {
                  "id": 4757,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1081:0:7"
                },
                "scope": 4789,
                "src": "1046:36:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "05dfd86f",
                "id": 4763,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setFactoryAdmin",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4761,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4760,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4763,
                      "src": "1113:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4759,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1113:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1112:9:7"
                },
                "returnParameters": {
                  "id": 4762,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1130:0:7"
                },
                "scope": 4789,
                "src": "1088:43:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "fd5dd6d4",
                "id": 4768,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setRouterFeSwap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4766,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4765,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4768,
                      "src": "1162:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4764,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1162:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1161:9:7"
                },
                "returnParameters": {
                  "id": 4767,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1179:0:7"
                },
                "scope": 4789,
                "src": "1137:43:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d7596677",
                "id": 4777,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "configFactory",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4775,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4770,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4777,
                      "src": "1209:6:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4769,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1209:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4772,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4777,
                      "src": "1217:6:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4771,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1217:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4774,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4777,
                      "src": "1225:6:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint64",
                        "typeString": "uint64"
                      },
                      "typeName": {
                        "id": 4773,
                        "name": "uint64",
                        "nodeType": "ElementaryTypeName",
                        "src": "1225:6:7",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint64",
                          "typeString": "uint64"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1208:24:7"
                },
                "returnParameters": {
                  "id": 4776,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1241:0:7"
                },
                "scope": 4789,
                "src": "1186:56:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "53a081d4",
                "id": 4788,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "managePair",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4786,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4779,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4788,
                      "src": "1268:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4778,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1268:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4781,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4788,
                      "src": "1277:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4780,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1277:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4783,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4788,
                      "src": "1286:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4782,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1286:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4785,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4788,
                      "src": "1295:7:7",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4784,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1295:7:7",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1267:36:7"
                },
                "returnParameters": {
                  "id": 4787,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1312:0:7"
                },
                "scope": 4789,
                "src": "1248:65:7",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 4790,
            "src": "65:1251:7"
          }
        ],
        "src": "37:1281:7"
      }
    },
    "contracts/interfaces/IFeSwapPair.sol": {
      "id": 8,
      "AST": {
        "absolutePath": "contracts/interfaces/IFeSwapPair.sol",
        "exportedSymbols": {
          "IFeSwapPair": [
            4947
          ]
        },
        "id": 4948,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 4791,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:8"
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapERC20.sol",
            "file": "./IFeSwapERC20.sol",
            "id": 4792,
            "nodeType": "ImportDirective",
            "scope": 4948,
            "sourceUnit": 4667,
            "src": "65:28:8",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 4793,
                  "name": "IFeSwapERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 4666,
                  "src": "122:12:8",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_IFeSwapERC20_$4666",
                    "typeString": "contract IFeSwapERC20"
                  }
                },
                "id": 4794,
                "nodeType": "InheritanceSpecifier",
                "src": "122:12:8"
              }
            ],
            "contractDependencies": [
              4666
            ],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 4947,
            "linearizedBaseContracts": [
              4947,
              4666
            ],
            "name": "IFeSwapPair",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 4802,
                "name": "Mint",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4801,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4796,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4802,
                      "src": "153:22:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4795,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "153:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4798,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4802,
                      "src": "177:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4797,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "177:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4800,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4802,
                      "src": "191:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4799,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "191:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "152:52:8"
                },
                "src": "142:63:8"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4812,
                "name": "Burn",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4811,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4804,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4812,
                      "src": "222:22:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4803,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "222:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4806,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4812,
                      "src": "246:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4805,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "246:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4808,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4812,
                      "src": "260:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4807,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "260:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4810,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4812,
                      "src": "274:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4809,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "274:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "221:72:8"
                },
                "src": "211:83:8"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4824,
                "name": "Swap",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4823,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4814,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "sender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4824,
                      "src": "311:22:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4813,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "311:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4816,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount0In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4824,
                      "src": "335:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4815,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "335:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4818,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1In",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4824,
                      "src": "351:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4817,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "351:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4820,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amount1Out",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4824,
                      "src": "367:15:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4819,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "367:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4822,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4824,
                      "src": "384:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4821,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "384:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "310:94:8"
                },
                "src": "300:105:8"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 4830,
                "name": "Sync",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 4829,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4826,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4830,
                      "src": "422:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 4825,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "422:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4828,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "reserve1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4830,
                      "src": "440:16:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 4827,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "440:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "421:36:8"
                },
                "src": "411:47:8"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ba9a7a56",
                "id": 4835,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "MINIMUM_LIQUIDITY",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4831,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "492:2:8"
                },
                "returnParameters": {
                  "id": 4834,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4833,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4835,
                      "src": "518:4:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4832,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "518:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "517:6:8"
                },
                "scope": 4947,
                "src": "466:58:8",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c45a0155",
                "id": 4840,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factory",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4836,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "546:2:8"
                },
                "returnParameters": {
                  "id": 4839,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4838,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4840,
                      "src": "572:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4837,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "572:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "571:9:8"
                },
                "scope": 4947,
                "src": "530:51:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "2ec2fe3d",
                "id": 4845,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "pairOwner",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4841,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "605:2:8"
                },
                "returnParameters": {
                  "id": 4844,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4843,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4845,
                      "src": "631:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4842,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "631:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "630:9:8"
                },
                "scope": 4947,
                "src": "587:53:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "6daf390b",
                "id": 4850,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "tokenIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4846,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "662:2:8"
                },
                "returnParameters": {
                  "id": 4849,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4848,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4850,
                      "src": "688:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4847,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "688:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "687:9:8"
                },
                "scope": 4947,
                "src": "646:51:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d0202d3b",
                "id": 4855,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "tokenOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4851,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "720:2:8"
                },
                "returnParameters": {
                  "id": 4854,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4853,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4855,
                      "src": "746:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4852,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "746:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "745:9:8"
                },
                "scope": 4947,
                "src": "703:52:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "0902f1ac",
                "id": 4866,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getReserves",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4856,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "781:2:8"
                },
                "returnParameters": {
                  "id": 4865,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4858,
                      "mutability": "mutable",
                      "name": "_reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4866,
                      "src": "808:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 4857,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "808:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4860,
                      "mutability": "mutable",
                      "name": "_reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4866,
                      "src": "828:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 4859,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "828:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4862,
                      "mutability": "mutable",
                      "name": "_blockTimestampLast",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4866,
                      "src": "909:26:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 4861,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "909:6:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4864,
                      "mutability": "mutable",
                      "name": "_rateTriggerArbitrage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4866,
                      "src": "937:26:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4863,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "937:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "806:158:8"
                },
                "scope": 4947,
                "src": "761:204:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5909c0d5",
                "id": 4871,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "price0CumulativeLast",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4867,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1000:2:8"
                },
                "returnParameters": {
                  "id": 4870,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4869,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4871,
                      "src": "1026:4:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4868,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1026:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1025:6:8"
                },
                "scope": 4947,
                "src": "971:61:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "5a3d5493",
                "id": 4876,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "price1CumulativeLast",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4872,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1067:2:8"
                },
                "returnParameters": {
                  "id": 4875,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4874,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4876,
                      "src": "1093:4:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4873,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1093:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1092:6:8"
                },
                "scope": 4947,
                "src": "1038:61:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7464fc3d",
                "id": 4881,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "kLast",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4877,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1119:2:8"
                },
                "returnParameters": {
                  "id": 4880,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4879,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4881,
                      "src": "1145:4:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4878,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1145:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1144:6:8"
                },
                "scope": 4947,
                "src": "1105:46:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "09f5d055",
                "id": 4886,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "rateTriggerArbitrage",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4882,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1186:2:8"
                },
                "returnParameters": {
                  "id": 4885,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4884,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4886,
                      "src": "1212:4:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4883,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1212:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1211:6:8"
                },
                "scope": 4947,
                "src": "1157:61:8",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "6a627842",
                "id": 4893,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4889,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4888,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4893,
                      "src": "1244:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4887,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1244:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1243:12:8"
                },
                "returnParameters": {
                  "id": 4892,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4891,
                      "mutability": "mutable",
                      "name": "liquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4893,
                      "src": "1274:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4890,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1274:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1273:16:8"
                },
                "scope": 4947,
                "src": "1230:60:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "89afcb44",
                "id": 4902,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4896,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4895,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4902,
                      "src": "1310:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4894,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1310:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1309:12:8"
                },
                "returnParameters": {
                  "id": 4901,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4898,
                      "mutability": "mutable",
                      "name": "amount0",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4902,
                      "src": "1340:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4897,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1340:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4900,
                      "mutability": "mutable",
                      "name": "amount1",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4902,
                      "src": "1354:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4899,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1354:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1339:28:8"
                },
                "scope": 4947,
                "src": "1296:72:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "1c6da724",
                "id": 4911,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swap",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4909,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4904,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4911,
                      "src": "1388:14:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4903,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1388:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4906,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4911,
                      "src": "1404:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4905,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1404:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4908,
                      "mutability": "mutable",
                      "name": "data",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4911,
                      "src": "1416:19:8",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_calldata_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 4907,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "1416:5:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1387:49:8"
                },
                "returnParameters": {
                  "id": 4910,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1445:0:8"
                },
                "scope": 4947,
                "src": "1374:72:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "bc25cf77",
                "id": 4916,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "skim",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4914,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4913,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4916,
                      "src": "1466:10:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4912,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1466:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1465:12:8"
                },
                "returnParameters": {
                  "id": 4915,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1486:0:8"
                },
                "scope": 4947,
                "src": "1452:35:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "fff6cae9",
                "id": 4923,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "sync",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4917,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1506:2:8"
                },
                "returnParameters": {
                  "id": 4922,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4919,
                      "mutability": "mutable",
                      "name": "_reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4923,
                      "src": "1526:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 4918,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1526:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4921,
                      "mutability": "mutable",
                      "name": "_reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4923,
                      "src": "1546:19:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 4920,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1546:7:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1525:41:8"
                },
                "scope": 4947,
                "src": "1493:74:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "f7013ef6",
                "id": 4936,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "initialize",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4934,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4925,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4936,
                      "src": "1595:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4924,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1595:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4927,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4936,
                      "src": "1604:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4926,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1604:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4929,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4936,
                      "src": "1613:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4928,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1613:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4931,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4936,
                      "src": "1622:7:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4930,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1622:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4933,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4936,
                      "src": "1631:4:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4932,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1631:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1594:42:8"
                },
                "returnParameters": {
                  "id": 4935,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1645:0:8"
                },
                "scope": 4947,
                "src": "1575:71:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "13af4035",
                "id": 4941,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "setOwner",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4939,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4938,
                      "mutability": "mutable",
                      "name": "_pairOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4941,
                      "src": "1670:18:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4937,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1670:7:8",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1669:20:8"
                },
                "returnParameters": {
                  "id": 4940,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1698:0:8"
                },
                "scope": 4947,
                "src": "1652:47:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a1f497d6",
                "id": 4946,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "adjusArbitragetRate",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4944,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4943,
                      "mutability": "mutable",
                      "name": "newRate",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4946,
                      "src": "1734:12:8",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4942,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1734:4:8",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1733:14:8"
                },
                "returnParameters": {
                  "id": 4945,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1756:0:8"
                },
                "scope": 4947,
                "src": "1705:52:8",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 4948,
            "src": "97:1663:8"
          }
        ],
        "src": "37:1725:8"
      }
    },
    "contracts/interfaces/IFeSwapRouter.sol": {
      "id": 9,
      "AST": {
        "absolutePath": "contracts/interfaces/IFeSwapRouter.sol",
        "exportedSymbols": {
          "IFeSwapRouter": [
            5360
          ]
        },
        "id": 5361,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 4949,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:9"
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapRouter.sol",
            "file": "./IFeSwapRouter.sol",
            "id": 4950,
            "nodeType": "ImportDirective",
            "scope": 5361,
            "sourceUnit": 5361,
            "src": "65:29:9",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 5360,
            "linearizedBaseContracts": [
              5360
            ],
            "name": "IFeSwapRouter",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "c45a0155",
                "id": 4955,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "factory",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4951,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "145:2:9"
                },
                "returnParameters": {
                  "id": 4954,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4953,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4955,
                      "src": "171:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4952,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "171:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "170:9:9"
                },
                "scope": 5360,
                "src": "129:51:9",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ead86a29",
                "id": 4960,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "feswaNFT",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4956,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "203:2:9"
                },
                "returnParameters": {
                  "id": 4959,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4958,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4960,
                      "src": "229:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4957,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "229:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "228:9:9"
                },
                "scope": 5360,
                "src": "186:52:9",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ad5c4648",
                "id": 4965,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "WETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4961,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "257:2:9"
                },
                "returnParameters": {
                  "id": 4964,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4963,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4965,
                      "src": "283:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4962,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "283:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "282:9:9"
                },
                "scope": 5360,
                "src": "244:48:9",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "6a055fa9",
                "id": 4978,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "ManageFeswaPair",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4972,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4967,
                      "mutability": "mutable",
                      "name": "tokenID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4978,
                      "src": "335:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4966,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "335:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4969,
                      "mutability": "mutable",
                      "name": "pairOwner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4978,
                      "src": "361:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4968,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "361:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4971,
                      "mutability": "mutable",
                      "name": "rateTrigger",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4978,
                      "src": "389:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4970,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "389:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "324:91:9"
                },
                "returnParameters": {
                  "id": 4977,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4974,
                      "mutability": "mutable",
                      "name": "pairAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4978,
                      "src": "434:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4973,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "434:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4976,
                      "mutability": "mutable",
                      "name": "pairABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 4978,
                      "src": "451:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4975,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "451:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "433:34:9"
                },
                "scope": 5360,
                "src": "300:168:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ba9f20b8",
                "id": 5003,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 4993,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4980,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "508:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4979,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "508:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4982,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "533:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4981,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "533:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4984,
                      "mutability": "mutable",
                      "name": "amountADesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "558:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4983,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "558:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4986,
                      "mutability": "mutable",
                      "name": "amountBDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "588:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4985,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "588:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4988,
                      "mutability": "mutable",
                      "name": "ratio",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "618:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4987,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "618:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4990,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "647:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 4989,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "647:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4992,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "668:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4991,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "668:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "497:191:9"
                },
                "returnParameters": {
                  "id": 5002,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 4995,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "707:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4994,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "707:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4997,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "721:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4996,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "721:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 4999,
                      "mutability": "mutable",
                      "name": "liquidityAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "735:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 4998,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "735:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5001,
                      "mutability": "mutable",
                      "name": "liquidityABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5003,
                      "src": "754:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5000,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "754:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "706:66:9"
                },
                "scope": 5360,
                "src": "476:297:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ffbcf7f3",
                "id": 5024,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5014,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5005,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5024,
                      "src": "816:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5004,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "816:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5007,
                      "mutability": "mutable",
                      "name": "amountTokenDesired",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5024,
                      "src": "840:23:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5006,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "840:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5009,
                      "mutability": "mutable",
                      "name": "ratio",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5024,
                      "src": "874:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5008,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "874:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5011,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5024,
                      "src": "895:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5010,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "895:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5013,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5024,
                      "src": "916:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5012,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "916:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "805:131:9"
                },
                "returnParameters": {
                  "id": 5023,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5016,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5024,
                      "src": "963:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5015,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "963:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5018,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5024,
                      "src": "981:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5017,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "981:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5020,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5024,
                      "src": "997:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5019,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "997:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5022,
                      "mutability": "mutable",
                      "name": "liquidityTEE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5024,
                      "src": "1016:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5021,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1016:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "962:72:9"
                },
                "scope": 5360,
                "src": "781:254:9",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "96adb337",
                "id": 5047,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidity",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5041,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5026,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1078:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5025,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1078:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5028,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1103:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5027,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1103:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5030,
                      "mutability": "mutable",
                      "name": "liquidityAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1128:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5029,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1128:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5032,
                      "mutability": "mutable",
                      "name": "liquidityABB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1156:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5031,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1156:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5034,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1184:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5033,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1184:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5036,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1210:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5035,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1210:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5038,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1236:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5037,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1236:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5040,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1257:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5039,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1257:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1067:210:9"
                },
                "returnParameters": {
                  "id": 5046,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5043,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1296:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5042,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1296:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5045,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5047,
                      "src": "1310:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5044,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1310:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1295:28:9"
                },
                "scope": 5360,
                "src": "1043:281:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ba3690cb",
                "id": 5068,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5062,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5049,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5068,
                      "src": "1368:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5048,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1368:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5051,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5068,
                      "src": "1392:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5050,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1392:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5053,
                      "mutability": "mutable",
                      "name": "liquidityTEE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5068,
                      "src": "1420:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5052,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1420:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5055,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5068,
                      "src": "1455:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5054,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1455:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5057,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5068,
                      "src": "1485:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5056,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1485:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5059,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5068,
                      "src": "1513:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5058,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1513:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5061,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5068,
                      "src": "1534:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5060,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1534:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1357:197:9"
                },
                "returnParameters": {
                  "id": 5067,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5064,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5068,
                      "src": "1573:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5063,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1573:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5066,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5068,
                      "src": "1591:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5065,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1591:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1572:34:9"
                },
                "scope": 5360,
                "src": "1330:277:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "2195995c",
                "id": 5097,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5091,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5070,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1658:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5069,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1658:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5072,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1683:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5071,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1683:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5074,
                      "mutability": "mutable",
                      "name": "liquidityAAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1708:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5073,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1708:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5076,
                      "mutability": "mutable",
                      "name": "amountAMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1736:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5075,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1736:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5078,
                      "mutability": "mutable",
                      "name": "amountBMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1762:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5077,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1762:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5080,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1796:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5079,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1796:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5082,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1817:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5081,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1817:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5084,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1841:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5083,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1841:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5086,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1858:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 5085,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "1858:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5088,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1867:9:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5087,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1867:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5090,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1878:9:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5089,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "1878:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1647:247:9"
                },
                "returnParameters": {
                  "id": 5096,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5093,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1913:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5092,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1913:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5095,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5097,
                      "src": "1927:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5094,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1927:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1912:28:9"
                },
                "scope": 5360,
                "src": "1613:328:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ded9382a",
                "id": 5124,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5118,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5099,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "1995:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5098,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1995:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5101,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2019:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5100,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2019:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5103,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2047:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5102,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2047:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5105,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2077:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5104,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2077:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5107,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2118:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5106,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2118:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5109,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2139:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5108,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2139:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5111,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2163:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5110,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2163:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5113,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2180:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 5112,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2180:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5115,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2189:9:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5114,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2189:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5117,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2200:9:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5116,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2200:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1984:232:9"
                },
                "returnParameters": {
                  "id": 5123,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5120,
                      "mutability": "mutable",
                      "name": "amountToken",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2235:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5119,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2235:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5122,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5124,
                      "src": "2253:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5121,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2253:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2234:34:9"
                },
                "scope": 5360,
                "src": "1947:322:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "8de9d7d2",
                "id": 5143,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5139,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5126,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5143,
                      "src": "2326:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5125,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2326:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5128,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5143,
                      "src": "2350:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5127,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2350:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5130,
                      "mutability": "mutable",
                      "name": "liquidityTEE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5143,
                      "src": "2378:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5129,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2378:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5132,
                      "mutability": "mutable",
                      "name": "amountTokenMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5143,
                      "src": "2414:19:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5131,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2414:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5134,
                      "mutability": "mutable",
                      "name": "amountETHMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5143,
                      "src": "2444:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5133,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2444:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5136,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5143,
                      "src": "2472:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5135,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2472:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5138,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5143,
                      "src": "2493:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5137,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2493:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2315:198:9"
                },
                "returnParameters": {
                  "id": 5142,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5141,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5143,
                      "src": "2532:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5140,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2532:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2531:16:9"
                },
                "scope": 5360,
                "src": "2275:273:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "573692c1",
                "id": 5166,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityETHWithPermitFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5162,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5145,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2615:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5144,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2615:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5147,
                      "mutability": "mutable",
                      "name": "liquidityTTE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2639:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5146,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2639:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5149,
                      "mutability": "mutable",
                      "name": "liquidityTEE",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2667:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5148,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2667:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5151,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2703:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5150,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2703:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5153,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2724:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5152,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2724:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5155,
                      "mutability": "mutable",
                      "name": "approveMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2748:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5154,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2748:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5157,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2765:7:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 5156,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "2765:5:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5159,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2774:9:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5158,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2774:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5161,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2785:9:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 5160,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "2785:7:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2604:197:9"
                },
                "returnParameters": {
                  "id": 5165,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5164,
                      "mutability": "mutable",
                      "name": "amountETH",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5166,
                      "src": "2820:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5163,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2820:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2819:16:9"
                },
                "scope": 5360,
                "src": "2554:282:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "38ed1739",
                "id": 5183,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5178,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5168,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5183,
                      "src": "2888:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5167,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2888:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5170,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5183,
                      "src": "2912:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5169,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2912:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5173,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5183,
                      "src": "2940:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5171,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2940:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5172,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2940:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5175,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5183,
                      "src": "2974:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5174,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2974:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5177,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5183,
                      "src": "2995:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5176,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2995:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2877:138:9"
                },
                "returnParameters": {
                  "id": 5182,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5181,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5183,
                      "src": "3034:21:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5179,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3034:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5180,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3034:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3033:23:9"
                },
                "scope": 5360,
                "src": "2844:213:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "8803dbee",
                "id": 5200,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5195,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5185,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5200,
                      "src": "3107:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5184,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3107:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5187,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5200,
                      "src": "3132:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5186,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3132:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5190,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5200,
                      "src": "3159:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5188,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3159:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5189,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3159:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5192,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5200,
                      "src": "3193:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5191,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3193:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5194,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5200,
                      "src": "3214:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5193,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3214:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3096:138:9"
                },
                "returnParameters": {
                  "id": 5199,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5198,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5200,
                      "src": "3253:21:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5196,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3253:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5197,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3253:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3252:23:9"
                },
                "scope": 5360,
                "src": "3063:213:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "7ff36ab5",
                "id": 5215,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5210,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5202,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5215,
                      "src": "3313:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5201,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3313:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5205,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5215,
                      "src": "3332:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5203,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3332:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5204,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3332:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5207,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5215,
                      "src": "3357:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5206,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3357:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5209,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5215,
                      "src": "3369:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5208,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3369:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3312:71:9"
                },
                "returnParameters": {
                  "id": 5214,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5213,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5215,
                      "src": "3437:21:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5211,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3437:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5212,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3437:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3436:23:9"
                },
                "scope": 5360,
                "src": "3282:178:9",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "4a25d94a",
                "id": 5232,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5227,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5217,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5232,
                      "src": "3497:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5216,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3497:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5219,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5232,
                      "src": "3513:16:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5218,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3513:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5222,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5232,
                      "src": "3531:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5220,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3531:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5221,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3531:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5224,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5232,
                      "src": "3556:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5223,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3556:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5226,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5232,
                      "src": "3568:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5225,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3568:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3496:86:9"
                },
                "returnParameters": {
                  "id": 5231,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5230,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5232,
                      "src": "3619:21:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5228,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3619:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5229,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3619:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3618:23:9"
                },
                "scope": 5360,
                "src": "3466:176:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "18cbafe5",
                "id": 5249,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5244,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5234,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5249,
                      "src": "3679:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5233,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3679:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5236,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5249,
                      "src": "3694:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5235,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3694:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5239,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5249,
                      "src": "3713:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5237,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3713:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5238,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3713:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5241,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5249,
                      "src": "3738:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5240,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3738:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5243,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5249,
                      "src": "3750:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5242,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3750:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3678:86:9"
                },
                "returnParameters": {
                  "id": 5248,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5247,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5249,
                      "src": "3801:21:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5245,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3801:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5246,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3801:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3800:23:9"
                },
                "scope": 5360,
                "src": "3648:176:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "fb3bdb41",
                "id": 5264,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5259,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5251,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5264,
                      "src": "3861:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5250,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3861:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5254,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5264,
                      "src": "3877:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5252,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3877:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5253,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3877:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5256,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5264,
                      "src": "3902:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5255,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3902:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5258,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5264,
                      "src": "3914:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5257,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3914:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3860:68:9"
                },
                "returnParameters": {
                  "id": 5263,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5262,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5264,
                      "src": "3982:21:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5260,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "3982:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5261,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3982:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3981:23:9"
                },
                "scope": 5360,
                "src": "3830:175:9",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "3d221b20",
                "id": 5278,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForTokensFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5276,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5266,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5278,
                      "src": "4075:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5265,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4075:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5268,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5278,
                      "src": "4099:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5267,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4099:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5271,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5278,
                      "src": "4127:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5269,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4127:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5270,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4127:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5273,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5278,
                      "src": "4161:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5272,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4161:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5275,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5278,
                      "src": "4182:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5274,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4182:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4064:138:9"
                },
                "returnParameters": {
                  "id": 5277,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4211:0:9"
                },
                "scope": 5360,
                "src": "4018:194:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d57b57a5",
                "id": 5290,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactETHForTokensFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5288,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5280,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5290,
                      "src": "4272:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5279,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4272:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5283,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5290,
                      "src": "4300:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5281,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4300:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5282,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4300:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5285,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5290,
                      "src": "4334:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5284,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4334:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5287,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5290,
                      "src": "4355:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5286,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4355:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4261:114:9"
                },
                "returnParameters": {
                  "id": 5289,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4392:0:9"
                },
                "scope": 5360,
                "src": "4218:175:9",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a59600db",
                "id": 5304,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForETHFeeOnTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5302,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5292,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5304,
                      "src": "4453:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5291,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4453:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5294,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5304,
                      "src": "4477:17:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5293,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4477:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5297,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5304,
                      "src": "4505:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5295,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4505:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5296,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4505:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5299,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5304,
                      "src": "4539:10:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5298,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4539:7:9",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5301,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5304,
                      "src": "4560:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5300,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4560:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4442:138:9"
                },
                "returnParameters": {
                  "id": 5303,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "4589:0:9"
                },
                "scope": 5360,
                "src": "4399:191:9",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "ad615dec",
                "id": 5315,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5311,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5306,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5315,
                      "src": "4617:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5305,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4617:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5308,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5315,
                      "src": "4631:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5307,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4631:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5310,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5315,
                      "src": "4646:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5309,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4646:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4616:44:9"
                },
                "returnParameters": {
                  "id": 5314,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5313,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5315,
                      "src": "4684:12:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5312,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4684:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4683:14:9"
                },
                "scope": 5360,
                "src": "4602:96:9",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "054d50d4",
                "id": 5326,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5322,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5317,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5326,
                      "src": "4726:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5316,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4726:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5319,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5326,
                      "src": "4741:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5318,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4741:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5321,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5326,
                      "src": "4757:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5320,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4757:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4725:48:9"
                },
                "returnParameters": {
                  "id": 5325,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5324,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5326,
                      "src": "4797:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5323,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4797:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4796:16:9"
                },
                "scope": 5360,
                "src": "4704:109:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "85f8c259",
                "id": 5337,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5333,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5328,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5337,
                      "src": "4840:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5327,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4840:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5330,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5337,
                      "src": "4856:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5329,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4856:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5332,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5337,
                      "src": "4872:15:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5331,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4872:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4839:49:9"
                },
                "returnParameters": {
                  "id": 5336,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5335,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5337,
                      "src": "4912:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5334,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4912:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4911:15:9"
                },
                "scope": 5360,
                "src": "4819:108:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "eef40f31",
                "id": 5348,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "estimateAmountsOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5343,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5339,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5348,
                      "src": "4961:13:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5338,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4961:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5342,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5348,
                      "src": "4976:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5340,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4976:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5341,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4976:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4960:40:9"
                },
                "returnParameters": {
                  "id": 5347,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5346,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5348,
                      "src": "5024:21:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5344,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5024:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5345,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5024:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5023:23:9"
                },
                "scope": 5360,
                "src": "4933:114:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "2e1db143",
                "id": 5359,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "estimateAmountsIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5354,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5350,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5359,
                      "src": "5080:14:9",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5349,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5080:4:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5353,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5359,
                      "src": "5096:23:9",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5351,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5096:7:9",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5352,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5096:9:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5079:41:9"
                },
                "returnParameters": {
                  "id": 5358,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5357,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5359,
                      "src": "5144:21:9",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5355,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5144:4:9",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5356,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5144:6:9",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5143:23:9"
                },
                "scope": 5360,
                "src": "5053:114:9",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5361,
            "src": "98:5072:9"
          }
        ],
        "src": "37:5135:9"
      }
    },
    "contracts/interfaces/IFeswaNFT.sol": {
      "id": 10,
      "AST": {
        "absolutePath": "contracts/interfaces/IFeswaNFT.sol",
        "exportedSymbols": {
          "FeswaPair": [
            5383
          ],
          "IFeswaNFT": [
            5400
          ],
          "PoolRunningPhase": [
            5370
          ]
        },
        "id": 5401,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5362,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:10"
          },
          {
            "id": 5363,
            "literals": [
              "experimental",
              "ABIEncoderV2"
            ],
            "nodeType": "PragmaDirective",
            "src": "63:33:10"
          },
          {
            "canonicalName": "PoolRunningPhase",
            "id": 5370,
            "members": [
              {
                "id": 5364,
                "name": "BidToStart",
                "nodeType": "EnumValue",
                "src": "137:10:10"
              },
              {
                "id": 5365,
                "name": "BidPhase",
                "nodeType": "EnumValue",
                "src": "158:8:10"
              },
              {
                "id": 5366,
                "name": "BidDelaying",
                "nodeType": "EnumValue",
                "src": "178:11:10"
              },
              {
                "id": 5367,
                "name": "BidSettled",
                "nodeType": "EnumValue",
                "src": "200:10:10"
              },
              {
                "id": 5368,
                "name": "PoolHolding",
                "nodeType": "EnumValue",
                "src": "221:11:10"
              },
              {
                "id": 5369,
                "name": "PoolForSale",
                "nodeType": "EnumValue",
                "src": "244:11:10"
              }
            ],
            "name": "PoolRunningPhase",
            "nodeType": "EnumDefinition",
            "src": "104:158:10"
          },
          {
            "canonicalName": "FeswaPair",
            "id": 5383,
            "members": [
              {
                "constant": false,
                "id": 5372,
                "mutability": "mutable",
                "name": "tokenA",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5383,
                "src": "298:14:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5371,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "298:7:10",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5374,
                "mutability": "mutable",
                "name": "tokenB",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5383,
                "src": "323:14:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_address",
                  "typeString": "address"
                },
                "typeName": {
                  "id": 5373,
                  "name": "address",
                  "nodeType": "ElementaryTypeName",
                  "src": "323:7:10",
                  "stateMutability": "nonpayable",
                  "typeDescriptions": {
                    "typeIdentifier": "t_address",
                    "typeString": "address"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5376,
                "mutability": "mutable",
                "name": "currentPrice",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5383,
                "src": "348:20:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 5375,
                  "name": "uint256",
                  "nodeType": "ElementaryTypeName",
                  "src": "348:7:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5378,
                "mutability": "mutable",
                "name": "timeCreated",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5383,
                "src": "379:19:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 5377,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "379:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5380,
                "mutability": "mutable",
                "name": "lastBidTime",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5383,
                "src": "409:19:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint64",
                  "typeString": "uint64"
                },
                "typeName": {
                  "id": 5379,
                  "name": "uint64",
                  "nodeType": "ElementaryTypeName",
                  "src": "409:6:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint64",
                    "typeString": "uint64"
                  }
                },
                "value": null,
                "visibility": "internal"
              },
              {
                "constant": false,
                "id": 5382,
                "mutability": "mutable",
                "name": "poolState",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 5383,
                "src": "440:27:10",
                "stateVariable": false,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_enum$_PoolRunningPhase_$5370",
                  "typeString": "enum PoolRunningPhase"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 5381,
                  "name": "PoolRunningPhase",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 5370,
                  "src": "440:16:10",
                  "typeDescriptions": {
                    "typeIdentifier": "t_enum$_PoolRunningPhase_$5370",
                    "typeString": "enum PoolRunningPhase"
                  }
                },
                "value": null,
                "visibility": "internal"
              }
            ],
            "name": "FeswaPair",
            "nodeType": "StructDefinition",
            "scope": 5401,
            "src": "270:205:10",
            "visibility": "public"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 5400,
            "linearizedBaseContracts": [
              5400
            ],
            "name": "IFeswaNFT",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "6352211e",
                "id": 5390,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "ownerOf",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5386,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5385,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5390,
                      "src": "537:15:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5384,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "537:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "536:17:10"
                },
                "returnParameters": {
                  "id": 5389,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5388,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5390,
                      "src": "577:13:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5387,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "577:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "576:15:10"
                },
                "scope": 5400,
                "src": "520:72:10",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "2f380b35",
                "id": 5399,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "getPoolInfo",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5393,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5392,
                      "mutability": "mutable",
                      "name": "tokenId",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5399,
                      "src": "619:15:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5391,
                        "name": "uint256",
                        "nodeType": "ElementaryTypeName",
                        "src": "619:7:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "618:17:10"
                },
                "returnParameters": {
                  "id": 5398,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5395,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5399,
                      "src": "659:7:10",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5394,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "659:7:10",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5397,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5399,
                      "src": "668:16:10",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_FeswaPair_$5383_memory_ptr",
                        "typeString": "struct FeswaPair"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 5396,
                        "name": "FeswaPair",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 5383,
                        "src": "668:9:10",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_FeswaPair_$5383_storage_ptr",
                          "typeString": "struct FeswaPair"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "658:27:10"
                },
                "scope": 5400,
                "src": "598:88:10",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5401,
            "src": "479:210:10"
          }
        ],
        "src": "37:652:10"
      }
    },
    "contracts/interfaces/IWETH.sol": {
      "id": 11,
      "AST": {
        "absolutePath": "contracts/interfaces/IWETH.sol",
        "exportedSymbols": {
          "IWETH": [
            5420
          ]
        },
        "id": 5421,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5402,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:11"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "interface",
            "documentation": null,
            "fullyImplemented": false,
            "id": 5420,
            "linearizedBaseContracts": [
              5420
            ],
            "name": "IWETH",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": null,
                "documentation": null,
                "functionSelector": "d0e30db0",
                "id": 5405,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "deposit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5403,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "104:2:11"
                },
                "returnParameters": {
                  "id": 5404,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "123:0:11"
                },
                "scope": 5420,
                "src": "88:36:11",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 5414,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5410,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5407,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5414,
                      "src": "148:10:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5406,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "148:7:11",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5409,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5414,
                      "src": "160:10:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5408,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "160:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "147:24:11"
                },
                "returnParameters": {
                  "id": 5413,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5412,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5414,
                      "src": "190:4:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 5411,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "190:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "189:6:11"
                },
                "scope": 5420,
                "src": "130:66:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": null,
                "documentation": null,
                "functionSelector": "2e1a7d4d",
                "id": 5419,
                "implemented": false,
                "kind": "function",
                "modifiers": [],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5417,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5416,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5419,
                      "src": "220:4:11",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5415,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "220:4:11",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "219:6:11"
                },
                "returnParameters": {
                  "id": 5418,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "234:0:11"
                },
                "scope": 5420,
                "src": "202:33:11",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 5421,
            "src": "65:173:11"
          }
        ],
        "src": "37:203:11"
      }
    },
    "contracts/libraries/Babylonian.sol": {
      "id": 12,
      "AST": {
        "absolutePath": "contracts/libraries/Babylonian.sol",
        "exportedSymbols": {
          "Babylonian": [
            5477
          ]
        },
        "id": 5478,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5422,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:12"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 5477,
            "linearizedBaseContracts": [
              5477
            ],
            "name": "Babylonian",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 5475,
                  "nodeType": "Block",
                  "src": "284:273:12",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5431,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5429,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5424,
                          "src": "299:1:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 5430,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "303:1:12",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "src": "299:5:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5467,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5465,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5424,
                            "src": "487:1:12",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5466,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "492:1:12",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "487:6:12",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 5473,
                        "nodeType": "IfStatement",
                        "src": "483:44:12",
                        "trueBody": {
                          "id": 5472,
                          "nodeType": "Block",
                          "src": "495:32:12",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 5470,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 5468,
                                  "name": "z",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5427,
                                  "src": "510:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 5469,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "514:1:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "510:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5471,
                              "nodeType": "ExpressionStatement",
                              "src": "510:5:12"
                            }
                          ]
                        }
                      },
                      "id": 5474,
                      "nodeType": "IfStatement",
                      "src": "295:232:12",
                      "trueBody": {
                        "id": 5464,
                        "nodeType": "Block",
                        "src": "306:171:12",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5434,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 5432,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5427,
                                "src": "321:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 5433,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5424,
                                "src": "325:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "321:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5435,
                            "nodeType": "ExpressionStatement",
                            "src": "321:5:12"
                          },
                          {
                            "assignments": [
                              5437
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5437,
                                "mutability": "mutable",
                                "name": "x",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5464,
                                "src": "341:6:12",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5436,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "341:4:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5443,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5442,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 5440,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 5438,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5424,
                                  "src": "350:1:12",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 5439,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "354:1:12",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "350:5:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 5441,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "358:1:12",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "350:9:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "341:18:12"
                          },
                          {
                            "body": {
                              "id": 5462,
                              "nodeType": "Block",
                              "src": "388:78:12",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5449,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 5447,
                                      "name": "z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5427,
                                      "src": "407:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 5448,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5437,
                                      "src": "411:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "407:5:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5450,
                                  "nodeType": "ExpressionStatement",
                                  "src": "407:5:12"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5460,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 5451,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5437,
                                      "src": "431:1:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 5459,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 5456,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 5454,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 5452,
                                                "name": "y",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5424,
                                                "src": "436:1:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "id": 5453,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 5437,
                                                "src": "440:1:12",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "436:5:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 5455,
                                              "name": "x",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5437,
                                              "src": "444:1:12",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "436:9:12",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 5457,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "435:11:12",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 5458,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "449:1:12",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "435:15:12",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "431:19:12",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5461,
                                  "nodeType": "ExpressionStatement",
                                  "src": "431:19:12"
                                }
                              ]
                            },
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5446,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5444,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5437,
                                "src": "381:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 5445,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5427,
                                "src": "385:1:12",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "381:5:12",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 5463,
                            "nodeType": "WhileStatement",
                            "src": "374:92:12"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 5476,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5425,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5424,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5476,
                      "src": "245:6:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5423,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "245:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "244:8:12"
                },
                "returnParameters": {
                  "id": 5428,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5427,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5476,
                      "src": "276:6:12",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5426,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "276:4:12",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "275:8:12"
                },
                "scope": 5477,
                "src": "231:326:12",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 5478,
            "src": "205:355:12"
          }
        ],
        "src": "37:525:12"
      }
    },
    "contracts/libraries/FeSwapLibrary.sol": {
      "id": 13,
      "AST": {
        "absolutePath": "contracts/libraries/FeSwapLibrary.sol",
        "exportedSymbols": {
          "FeSwapLibrary": [
            6210
          ]
        },
        "id": 6211,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 5479,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:13"
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapPair.sol",
            "file": "../interfaces/IFeSwapPair.sol",
            "id": 5480,
            "nodeType": "ImportDirective",
            "scope": 6211,
            "sourceUnit": 4948,
            "src": "65:39:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapFactory.sol",
            "file": "../interfaces/IFeSwapFactory.sol",
            "id": 5481,
            "nodeType": "ImportDirective",
            "scope": 6211,
            "sourceUnit": 4790,
            "src": "106:42:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/TransferHelper.sol",
            "file": "./TransferHelper.sol",
            "id": 5482,
            "nodeType": "ImportDirective",
            "scope": 6211,
            "sourceUnit": 6870,
            "src": "150:30:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "./SafeMath.sol",
            "id": 5483,
            "nodeType": "ImportDirective",
            "scope": 6211,
            "sourceUnit": 6710,
            "src": "184:24:13",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6210,
            "linearizedBaseContracts": [
              6210
            ],
            "name": "FeSwapLibrary",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 5486,
                "libraryName": {
                  "contractScope": null,
                  "id": 5484,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6709,
                  "src": "247:8:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$6709",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "241:24:13",
                "typeName": {
                  "id": 5485,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "260:4:13",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "body": {
                  "id": 5521,
                  "nodeType": "Block",
                  "src": "460:319:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5519,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5497,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5495,
                          "src": "470:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "ff",
                                          "id": 5505,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "535:7:13",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
                                            "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                          },
                                          "value": null
                                        },
                                        {
                                          "argumentTypes": null,
                                          "id": 5506,
                                          "name": "factory",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5488,
                                          "src": "561:7:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "arguments": [
                                                {
                                                  "argumentTypes": null,
                                                  "id": 5510,
                                                  "name": "tokenA",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5490,
                                                  "src": "614:6:13",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                },
                                                {
                                                  "argumentTypes": null,
                                                  "id": 5511,
                                                  "name": "tokenB",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": 5492,
                                                  "src": "622:6:13",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                }
                                              ],
                                              "expression": {
                                                "argumentTypes": [
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  },
                                                  {
                                                    "typeIdentifier": "t_address",
                                                    "typeString": "address"
                                                  }
                                                ],
                                                "expression": {
                                                  "argumentTypes": null,
                                                  "id": 5508,
                                                  "name": "abi",
                                                  "nodeType": "Identifier",
                                                  "overloadedDeclarations": [],
                                                  "referencedDeclaration": -1,
                                                  "src": "597:3:13",
                                                  "typeDescriptions": {
                                                    "typeIdentifier": "t_magic_abi",
                                                    "typeString": "abi"
                                                  }
                                                },
                                                "id": 5509,
                                                "isConstant": false,
                                                "isLValue": false,
                                                "isPure": true,
                                                "lValueRequested": false,
                                                "memberName": "encodePacked",
                                                "nodeType": "MemberAccess",
                                                "referencedDeclaration": null,
                                                "src": "597:16:13",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                                  "typeString": "function () pure returns (bytes memory)"
                                                }
                                              },
                                              "id": 5512,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "kind": "functionCall",
                                              "lValueRequested": false,
                                              "names": [],
                                              "nodeType": "FunctionCall",
                                              "src": "597:32:13",
                                              "tryCall": false,
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_bytes_memory_ptr",
                                                "typeString": "bytes memory"
                                              }
                                            ],
                                            "id": 5507,
                                            "name": "keccak256",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": -8,
                                            "src": "587:9:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                              "typeString": "function (bytes memory) pure returns (bytes32)"
                                            }
                                          },
                                          "id": 5513,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "functionCall",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "587:43:13",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          }
                                        },
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "baeae6b526d52ab9edea88a8a5991ed61443a0c4d6bea03dc99971664961f4b7",
                                          "id": 5514,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "649:69:13",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_ac7fe5200b7fe31105d50d2da4fa4f5cb78dd4ebddc0e4afedf18743c0625675",
                                            "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                          },
                                          "value": null
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_8b1a944cf13a9a1c08facb2c9e98623ef3254d2ddb48113885c3e8e97fec8db9",
                                            "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                          },
                                          {
                                            "typeIdentifier": "t_address",
                                            "typeString": "address"
                                          },
                                          {
                                            "typeIdentifier": "t_bytes32",
                                            "typeString": "bytes32"
                                          },
                                          {
                                            "typeIdentifier": "t_stringliteral_ac7fe5200b7fe31105d50d2da4fa4f5cb78dd4ebddc0e4afedf18743c0625675",
                                            "typeString": "literal_string (contains invalid UTF-8 sequence at position 0)"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 5503,
                                          "name": "abi",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": -1,
                                          "src": "500:3:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_magic_abi",
                                            "typeString": "abi"
                                          }
                                        },
                                        "id": 5504,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "memberName": "encodePacked",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": null,
                                        "src": "500:16:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                          "typeString": "function () pure returns (bytes memory)"
                                        }
                                      },
                                      "id": 5515,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "500:268:13",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 5502,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "490:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 5516,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "490:279:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                ],
                                "id": 5501,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "485:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 5500,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "485:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 5517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "485:285:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5499,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "477:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 5498,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "477:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 5518,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "477:294:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "src": "470:301:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5520,
                      "nodeType": "ExpressionStatement",
                      "src": "470:301:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 5522,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "pairFor",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5493,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5488,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5522,
                      "src": "374:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5487,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "374:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5490,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5522,
                      "src": "391:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5489,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "391:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5492,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5522,
                      "src": "407:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5491,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "407:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "373:49:13"
                },
                "returnParameters": {
                  "id": 5496,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5495,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5522,
                      "src": "446:12:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5494,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "446:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "445:14:13"
                },
                "scope": 6210,
                "src": "357:422:13",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 5558,
                  "nodeType": "Block",
                  "src": "1027:147:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5545,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5539,
                          "name": "pair",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5535,
                          "src": "1038:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5541,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5524,
                              "src": "1053:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5542,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5526,
                              "src": "1062:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5543,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5528,
                              "src": "1070:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5540,
                            "name": "pairFor",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5522,
                            "src": "1045:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_address_$_t_address_$_t_address_$returns$_t_address_$",
                              "typeString": "function (address,address,address) pure returns (address)"
                            }
                          },
                          "id": 5544,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1045:32:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "src": "1038:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "id": 5546,
                      "nodeType": "ExpressionStatement",
                      "src": "1038:39:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5556,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 5547,
                              "name": "reserveA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5531,
                              "src": "1089:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5548,
                              "name": "reserveB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5533,
                              "src": "1099:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            null,
                            {
                              "argumentTypes": null,
                              "id": 5549,
                              "name": "rateTriggerArbitrage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5537,
                              "src": "1111:20:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 5550,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "1088:44:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$__$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,,uint256)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5552,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5535,
                                  "src": "1147:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5551,
                                "name": "IFeSwapPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4947,
                                "src": "1135:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                  "typeString": "type(contract IFeSwapPair)"
                                }
                              },
                              "id": 5553,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1135:17:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                "typeString": "contract IFeSwapPair"
                              }
                            },
                            "id": 5554,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "getReserves",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4866,
                            "src": "1135:29:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                              "typeString": "function () view external returns (uint112,uint112,uint32,uint256)"
                            }
                          },
                          "id": 5555,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1135:31:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                            "typeString": "tuple(uint112,uint112,uint32,uint256)"
                          }
                        },
                        "src": "1088:78:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5557,
                      "nodeType": "ExpressionStatement",
                      "src": "1088:78:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 5559,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getReserves",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5529,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5524,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5559,
                      "src": "858:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5523,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "858:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5526,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5559,
                      "src": "875:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5525,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "875:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5528,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5559,
                      "src": "891:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5527,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "891:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "857:49:13"
                },
                "returnParameters": {
                  "id": 5538,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5531,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5559,
                      "src": "956:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5530,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "956:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5533,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5559,
                      "src": "971:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5532,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "971:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5535,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5559,
                      "src": "986:12:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5534,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "986:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5537,
                      "mutability": "mutable",
                      "name": "rateTriggerArbitrage",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5559,
                      "src": "1000:25:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5536,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1000:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "955:71:13"
                },
                "scope": 6210,
                "src": "837:337:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 5597,
                  "nodeType": "Block",
                  "src": "1383:219:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5573,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5571,
                              "name": "amountA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5561,
                              "src": "1402:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5572,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1412:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1402:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e53554646494349454e545f414d4f554e54",
                            "id": 5574,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1415:36:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_7b61f797216458b8c30e6c78465c095a76affc906868a2b23f2606d6d9c47e10",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_AMOUNT\""
                            },
                            "value": "FeSwapLibrary: INSUFFICIENT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_7b61f797216458b8c30e6c78465c095a76affc906868a2b23f2606d6d9c47e10",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_AMOUNT\""
                            }
                          ],
                          "id": 5570,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1394:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5575,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1394:58:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5576,
                      "nodeType": "ExpressionStatement",
                      "src": "1394:58:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5584,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5580,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5578,
                                "name": "reserveA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5563,
                                "src": "1471:8:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5579,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1482:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1471:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5581,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5565,
                                "src": "1487:8:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5582,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1498:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1487:12:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1471:28:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                            "id": 5585,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1501:39:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_26071c339daf215a2f4c65d7b204ec5ef9aae69c39370060af8c68abce6d5466",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "FeSwapLibrary: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_26071c339daf215a2f4c65d7b204ec5ef9aae69c39370060af8c68abce6d5466",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 5577,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1463:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5586,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1463:78:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5587,
                      "nodeType": "ExpressionStatement",
                      "src": "1463:78:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5595,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5588,
                          "name": "amountB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5568,
                          "src": "1552:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5594,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5591,
                                "name": "reserveB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5565,
                                "src": "1574:8:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 5589,
                                "name": "amountA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5561,
                                "src": "1562:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5590,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6708,
                              "src": "1562:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 5592,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1562:21:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5593,
                            "name": "reserveA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5563,
                            "src": "1586:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1562:32:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1552:42:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5596,
                      "nodeType": "ExpressionStatement",
                      "src": "1552:42:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 5598,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "quote",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5566,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5561,
                      "mutability": "mutable",
                      "name": "amountA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5598,
                      "src": "1302:12:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5560,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1302:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5563,
                      "mutability": "mutable",
                      "name": "reserveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5598,
                      "src": "1316:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5562,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1316:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5565,
                      "mutability": "mutable",
                      "name": "reserveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5598,
                      "src": "1331:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5564,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1331:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1301:44:13"
                },
                "returnParameters": {
                  "id": 5569,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5568,
                      "mutability": "mutable",
                      "name": "amountB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5598,
                      "src": "1369:12:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5567,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1369:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1368:14:13"
                },
                "scope": 6210,
                "src": "1287:315:13",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 5647,
                  "nodeType": "Block",
                  "src": "1833:327:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5612,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5610,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5600,
                              "src": "1852:8:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5611,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1863:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1852:12:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e53554646494349454e545f494e5055545f414d4f554e54",
                            "id": 5613,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1866:42:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e5725392dda1405e079f861e3b1606c0c2b3566dbb8e2fec1c5b4f34316fc18",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_INPUT_AMOUNT\""
                            },
                            "value": "FeSwapLibrary: INSUFFICIENT_INPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3e5725392dda1405e079f861e3b1606c0c2b3566dbb8e2fec1c5b4f34316fc18",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_INPUT_AMOUNT\""
                            }
                          ],
                          "id": 5609,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1844:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5614,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1844:65:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5615,
                      "nodeType": "ExpressionStatement",
                      "src": "1844:65:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5619,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5617,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5602,
                                "src": "1928:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5618,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1940:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1928:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5620,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5604,
                                "src": "1945:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5621,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1958:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1945:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1928:31:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                            "id": 5624,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1961:39:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_26071c339daf215a2f4c65d7b204ec5ef9aae69c39370060af8c68abce6d5466",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "FeSwapLibrary: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_26071c339daf215a2f4c65d7b204ec5ef9aae69c39370060af8c68abce6d5466",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 5616,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1920:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5625,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1920:81:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5626,
                      "nodeType": "ExpressionStatement",
                      "src": "1920:81:13"
                    },
                    {
                      "assignments": [
                        5628
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5628,
                          "mutability": "mutable",
                          "name": "numerator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5647,
                          "src": "2012:14:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5627,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2012:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5633,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5631,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5604,
                            "src": "2042:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5629,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5600,
                            "src": "2029:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5630,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6708,
                          "src": "2029:12:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5632,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2029:24:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2012:41:13"
                    },
                    {
                      "assignments": [
                        5635
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5635,
                          "mutability": "mutable",
                          "name": "denominator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5647,
                          "src": "2064:16:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5634,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2064:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5640,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5638,
                            "name": "amountIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5600,
                            "src": "2097:8:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5636,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5602,
                            "src": "2083:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5637,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6658,
                          "src": "2083:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5639,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2083:23:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2064:42:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5645,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5641,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5607,
                          "src": "2117:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5644,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 5642,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5628,
                            "src": "2129:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5643,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5635,
                            "src": "2141:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2129:23:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2117:35:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5646,
                      "nodeType": "ExpressionStatement",
                      "src": "2117:35:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 5648,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5605,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5600,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5648,
                      "src": "1746:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5599,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1746:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5602,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5648,
                      "src": "1761:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5601,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1761:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5604,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5648,
                      "src": "1777:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5603,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1777:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1745:48:13"
                },
                "returnParameters": {
                  "id": 5608,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5607,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5648,
                      "src": "1817:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5606,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1817:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1816:16:13"
                },
                "scope": 6210,
                "src": "1724:436:13",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 5701,
                  "nodeType": "Block",
                  "src": "2389:405:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5662,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 5660,
                              "name": "amountOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5650,
                              "src": "2408:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 5661,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2420:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2408:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e53554646494349454e545f4f55545055545f414d4f554e54",
                            "id": 5663,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2423:43:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_dab6569d424be9e77fd95d79dd63f3c7246842563c9598a357e3c9c1141b05ed",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""
                            },
                            "value": "FeSwapLibrary: INSUFFICIENT_OUTPUT_AMOUNT"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_dab6569d424be9e77fd95d79dd63f3c7246842563c9598a357e3c9c1141b05ed",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_OUTPUT_AMOUNT\""
                            }
                          ],
                          "id": 5659,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2400:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2400:67:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5665,
                      "nodeType": "ExpressionStatement",
                      "src": "2400:67:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 5673,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5667,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5652,
                                "src": "2486:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5668,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2498:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2486:13:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5672,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5670,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5654,
                                "src": "2503:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5671,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2516:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2503:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "2486:31:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e53554646494349454e545f4c4951554944495459",
                            "id": 5674,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2519:39:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_26071c339daf215a2f4c65d7b204ec5ef9aae69c39370060af8c68abce6d5466",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_LIQUIDITY\""
                            },
                            "value": "FeSwapLibrary: INSUFFICIENT_LIQUIDITY"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_26071c339daf215a2f4c65d7b204ec5ef9aae69c39370060af8c68abce6d5466",
                              "typeString": "literal_string \"FeSwapLibrary: INSUFFICIENT_LIQUIDITY\""
                            }
                          ],
                          "id": 5666,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2478:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5675,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2478:81:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5676,
                      "nodeType": "ExpressionStatement",
                      "src": "2478:81:13"
                    },
                    {
                      "assignments": [
                        5678
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5678,
                          "mutability": "mutable",
                          "name": "numerator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5701,
                          "src": "2570:14:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5677,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2570:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5683,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5681,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5650,
                            "src": "2601:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5679,
                            "name": "reserveIn",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5652,
                            "src": "2587:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5680,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6708,
                          "src": "2587:13:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5682,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2587:24:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2570:41:13"
                    },
                    {
                      "assignments": [
                        5685
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5685,
                          "mutability": "mutable",
                          "name": "denominator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5701,
                          "src": "2622:16:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5684,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2622:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5690,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5688,
                            "name": "amountOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5650,
                            "src": "2656:9:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5686,
                            "name": "reserveOut",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5654,
                            "src": "2641:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5687,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6680,
                          "src": "2641:14:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2641:25:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2622:44:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5699,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5691,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5657,
                          "src": "2733:8:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5698,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5694,
                                    "name": "denominator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5685,
                                    "src": "2759:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 5692,
                                    "name": "numerator",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5678,
                                    "src": "2745:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 5693,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "add",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6658,
                                  "src": "2745:13:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2745:26:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 5696,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "2744:28:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 5697,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5685,
                            "src": "2775:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "2744:42:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2733:53:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5700,
                      "nodeType": "ExpressionStatement",
                      "src": "2733:53:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 5702,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5655,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5650,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5702,
                      "src": "2302:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5649,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2302:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5652,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5702,
                      "src": "2318:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5651,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2318:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5654,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5702,
                      "src": "2334:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5653,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2334:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2301:49:13"
                },
                "returnParameters": {
                  "id": 5658,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5657,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5702,
                      "src": "2374:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5656,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2374:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2373:15:13"
                },
                "scope": 6210,
                "src": "2281:513:13",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 5853,
                  "nodeType": "Block",
                  "src": "2944:1072:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5726,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "id": 5717,
                              "name": "reserveIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5711,
                              "src": "2956:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5718,
                              "name": "reserveOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5713,
                              "src": "2967:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5719,
                              "name": "pair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5715,
                              "src": "2979:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            null
                          ],
                          "id": 5720,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "TupleExpression",
                          "src": "2955:31:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$__$",
                            "typeString": "tuple(uint256,uint256,address,)"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5722,
                              "name": "factory",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5704,
                              "src": "3001:7:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5723,
                              "name": "tokenA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5706,
                              "src": "3010:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 5724,
                              "name": "tokenB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5708,
                              "src": "3018:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            ],
                            "id": 5721,
                            "name": "getReserves",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5559,
                            "src": "2989:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                              "typeString": "function (address,address,address) view returns (uint256,uint256,address,uint256)"
                            }
                          },
                          "id": 5725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2989:36:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                            "typeString": "tuple(uint256,uint256,address,uint256)"
                          }
                        },
                        "src": "2955:70:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5727,
                      "nodeType": "ExpressionStatement",
                      "src": "2955:70:13"
                    },
                    {
                      "assignments": [
                        5729,
                        5731,
                        5733,
                        5735
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5729,
                          "mutability": "mutable",
                          "name": "reserveInMate",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5853,
                          "src": "3037:18:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5728,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3037:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 5731,
                          "mutability": "mutable",
                          "name": "reserveOutMate",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5853,
                          "src": "3057:19:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5730,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3057:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 5733,
                          "mutability": "mutable",
                          "name": "PairMate",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5853,
                          "src": "3078:16:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 5732,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3078:7:13",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 5735,
                          "mutability": "mutable",
                          "name": "rateTriggerArbitrage",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5853,
                          "src": "3096:25:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5734,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3096:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5742,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5738,
                            "name": "factory",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5704,
                            "src": "3151:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5739,
                            "name": "tokenB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5708,
                            "src": "3160:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 5740,
                            "name": "tokenA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5706,
                            "src": "3168:6:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 5736,
                            "name": "FeSwapLibrary",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6210,
                            "src": "3125:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_contract$_FeSwapLibrary_$6210_$",
                              "typeString": "type(library FeSwapLibrary)"
                            }
                          },
                          "id": 5737,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 5559,
                          "src": "3125:25:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                            "typeString": "function (address,address,address) view returns (uint256,uint256,address,uint256)"
                          }
                        },
                        "id": 5741,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3125:50:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                          "typeString": "tuple(uint256,uint256,address,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3036:139:13"
                    },
                    {
                      "assignments": [
                        5744
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5744,
                          "mutability": "mutable",
                          "name": "productIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5853,
                          "src": "3187:14:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5743,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3187:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5752,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5750,
                            "name": "reserveInMate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5729,
                            "src": "3224:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5747,
                                "name": "reserveIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5711,
                                "src": "3209:9:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5746,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3204:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5745,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "3204:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5748,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3204:15:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6708,
                          "src": "3204:19:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3204:34:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3187:51:13"
                    },
                    {
                      "assignments": [
                        5754
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 5754,
                          "mutability": "mutable",
                          "name": "productOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 5853,
                          "src": "3249:15:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 5753,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3249:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 5762,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 5760,
                            "name": "reserveOutMate",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5731,
                            "src": "3288:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 5757,
                                "name": "reserveOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5713,
                                "src": "3272:10:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 5756,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "3267:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 5755,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "3267:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 5758,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3267:16:13",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 5759,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6708,
                          "src": "3267:20:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 5761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3267:36:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3249:54:13"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5771,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "hexValue": "3130303030",
                              "id": 5765,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "3331:5:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              },
                              "value": "10000"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_10000_by_1",
                                "typeString": "int_const 10000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5763,
                              "name": "productIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5744,
                              "src": "3317:9:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5764,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6708,
                            "src": "3317:13:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 5766,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3317:20:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 5769,
                              "name": "rateTriggerArbitrage",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5735,
                              "src": "3355:20:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 5767,
                              "name": "productOut",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5754,
                              "src": "3340:10:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5768,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "mul",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6708,
                            "src": "3340:14:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 5770,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "3340:36:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3317:59:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 5852,
                      "nodeType": "IfStatement",
                      "src": "3314:695:13",
                      "trueBody": {
                        "id": 5851,
                        "nodeType": "Block",
                        "src": "3377:632:13",
                        "statements": [
                          {
                            "assignments": [
                              5773
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5773,
                                "mutability": "mutable",
                                "name": "ArbitatrageIn",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5851,
                                "src": "3409:18:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5772,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3409:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5778,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5776,
                                  "name": "productOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5754,
                                  "src": "3444:10:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5774,
                                  "name": "productIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5744,
                                  "src": "3430:9:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5775,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sub",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6680,
                                "src": "3430:13:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5777,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3430:25:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3409:46:13"
                          },
                          {
                            "assignments": [
                              5780
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5780,
                                "mutability": "mutable",
                                "name": "totalTokenA",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5851,
                                "src": "3470:16:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5779,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3470:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5792,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 5790,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3531:1:13",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 5786,
                                          "name": "reserveOutMate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5731,
                                          "src": "3510:14:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 5783,
                                              "name": "reserveIn",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5711,
                                              "src": "3495:9:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 5782,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3490:4:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 5781,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3490:4:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          },
                                          "id": 5784,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3490:15:13",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 5785,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6658,
                                        "src": "3490:19:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 5787,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3490:35:13",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 5788,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3489:37:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5789,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6708,
                                "src": "3489:41:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5791,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3489:44:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3470:63:13"
                          },
                          {
                            "assignments": [
                              5794
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5794,
                                "mutability": "mutable",
                                "name": "totalTokenB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5851,
                                "src": "3563:16:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5793,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3563:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5806,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 5804,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3624:1:13",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 5800,
                                          "name": "reserveInMate",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 5729,
                                          "src": "3604:13:13",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "id": 5797,
                                              "name": "reserveOut",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 5713,
                                              "src": "3588:10:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            ],
                                            "id": 5796,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "3583:4:13",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 5795,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "3583:4:13",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          },
                                          "id": 5798,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "3583:16:13",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 5799,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "add",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6658,
                                        "src": "3583:20:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 5801,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3583:35:13",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 5802,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "3582:37:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 5803,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6708,
                                "src": "3582:41:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 5805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3582:44:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3563:63:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5810,
                                  "name": "tokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5706,
                                  "src": "3673:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5811,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5715,
                                  "src": "3681:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5812,
                                  "name": "PairMate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5733,
                                  "src": "3687:8:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5815,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5813,
                                    "name": "ArbitatrageIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5773,
                                    "src": "3697:13:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 5814,
                                    "name": "totalTokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5794,
                                    "src": "3713:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3697:27:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5807,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6869,
                                  "src": "3641:14:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 5809,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6843,
                                "src": "3641:31:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,uint256)"
                                }
                              },
                              "id": 5816,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3641:84:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5817,
                            "nodeType": "ExpressionStatement",
                            "src": "3641:84:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5821,
                                  "name": "tokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5708,
                                  "src": "3782:6:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5822,
                                  "name": "PairMate",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5733,
                                  "src": "3790:8:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 5823,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5715,
                                  "src": "3800:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5826,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5824,
                                    "name": "ArbitatrageIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5773,
                                    "src": "3806:13:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "/",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 5825,
                                    "name": "totalTokenA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5780,
                                    "src": "3822:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "3806:27:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 5818,
                                  "name": "TransferHelper",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6869,
                                  "src": "3750:14:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_contract$_TransferHelper_$6869_$",
                                    "typeString": "type(library TransferHelper)"
                                  }
                                },
                                "id": 5820,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "safeTransferFrom",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6843,
                                "src": "3750:31:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$_t_uint256_$returns$__$",
                                  "typeString": "function (address,address,address,uint256)"
                                }
                              },
                              "id": 5827,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3750:84:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5828,
                            "nodeType": "ExpressionStatement",
                            "src": "3750:84:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5830,
                                      "name": "pair",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5715,
                                      "src": "3862:4:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5829,
                                    "name": "IFeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4947,
                                    "src": "3850:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                      "typeString": "type(contract IFeSwapPair)"
                                    }
                                  },
                                  "id": 5831,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3850:17:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 5832,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sync",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4923,
                                "src": "3850:22:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint112_$_t_uint112_$",
                                  "typeString": "function () external returns (uint112,uint112)"
                                }
                              },
                              "id": 5833,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3850:24:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$",
                                "typeString": "tuple(uint112,uint112)"
                              }
                            },
                            "id": 5834,
                            "nodeType": "ExpressionStatement",
                            "src": "3850:24:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [],
                              "expression": {
                                "argumentTypes": [],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 5836,
                                      "name": "PairMate",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5733,
                                      "src": "3901:8:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 5835,
                                    "name": "IFeSwapPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 4947,
                                    "src": "3889:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                      "typeString": "type(contract IFeSwapPair)"
                                    }
                                  },
                                  "id": 5837,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3889:21:13",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                    "typeString": "contract IFeSwapPair"
                                  }
                                },
                                "id": 5838,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sync",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 4923,
                                "src": "3889:26:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$__$returns$_t_uint112_$_t_uint112_$",
                                  "typeString": "function () external returns (uint112,uint112)"
                                }
                              },
                              "id": 5839,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3889:28:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$",
                                "typeString": "tuple(uint112,uint112)"
                              }
                            },
                            "id": 5840,
                            "nodeType": "ExpressionStatement",
                            "src": "3889:28:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5849,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5841,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5711,
                                    "src": "3933:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5842,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5713,
                                    "src": "3944:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  null,
                                  null
                                ],
                                "id": 5843,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "3932:26:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$__$__$",
                                  "typeString": "tuple(uint256,uint256,,)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 5845,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5704,
                                    "src": "3973:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5846,
                                    "name": "tokenA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5706,
                                    "src": "3982:6:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5847,
                                    "name": "tokenB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5708,
                                    "src": "3990:6:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 5844,
                                  "name": "getReserves",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5559,
                                  "src": "3961:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                                    "typeString": "function (address,address,address) view returns (uint256,uint256,address,uint256)"
                                  }
                                },
                                "id": 5848,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3961:36:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                                  "typeString": "tuple(uint256,uint256,address,uint256)"
                                }
                              },
                              "src": "3932:65:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 5850,
                            "nodeType": "ExpressionStatement",
                            "src": "3932:65:13"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 5854,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "arbitragePairPools",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5709,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5704,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5854,
                      "src": "2830:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5703,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2830:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5706,
                      "mutability": "mutable",
                      "name": "tokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5854,
                      "src": "2847:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5705,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2847:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5708,
                      "mutability": "mutable",
                      "name": "tokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5854,
                      "src": "2863:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5707,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2863:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2829:49:13"
                },
                "returnParameters": {
                  "id": 5716,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5711,
                      "mutability": "mutable",
                      "name": "reserveIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5854,
                      "src": "2897:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5710,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2897:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5713,
                      "mutability": "mutable",
                      "name": "reserveOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5854,
                      "src": "2913:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5712,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2913:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5715,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5854,
                      "src": "2930:12:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5714,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2930:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2896:47:13"
                },
                "scope": 6210,
                "src": "2802:1214:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 5947,
                  "nodeType": "Block",
                  "src": "4241:466:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5873,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5870,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5861,
                                "src": "4260:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 5871,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4260:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 5872,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4275:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "4260:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e56414c49445f50415448",
                            "id": 5874,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4278:29:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9842a722bfae878b8949df0638ed5ceb7fd53e47f08109cc06ab797a166efe2c",
                              "typeString": "literal_string \"FeSwapLibrary: INVALID_PATH\""
                            },
                            "value": "FeSwapLibrary: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9842a722bfae878b8949df0638ed5ceb7fd53e47f08109cc06ab797a166efe2c",
                              "typeString": "literal_string \"FeSwapLibrary: INVALID_PATH\""
                            }
                          ],
                          "id": 5869,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4252:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5875,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4252:56:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5876,
                      "nodeType": "ExpressionStatement",
                      "src": "4252:56:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5884,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5877,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5867,
                          "src": "4319:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5881,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5861,
                                "src": "4340:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 5882,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4340:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5880,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "4329:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5878,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "4333:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5879,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "4333:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 5883,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4329:23:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "4319:33:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 5885,
                      "nodeType": "ExpressionStatement",
                      "src": "4319:33:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5890,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5886,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5867,
                            "src": "4363:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 5888,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4371:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "4363:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5889,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5858,
                          "src": "4376:8:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4363:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5891,
                      "nodeType": "ExpressionStatement",
                      "src": "4363:21:13"
                    },
                    {
                      "body": {
                        "id": 5945,
                        "nodeType": "Block",
                        "src": "4438:262:13",
                        "statements": [
                          {
                            "assignments": [
                              5906,
                              5908,
                              5910
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5906,
                                "mutability": "mutable",
                                "name": "reserveIn",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5945,
                                "src": "4454:14:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5905,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4454:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 5908,
                                "mutability": "mutable",
                                "name": "reserveOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5945,
                                "src": "4470:15:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5907,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4470:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 5910,
                                "mutability": "mutable",
                                "name": "_firstPair",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 5945,
                                "src": "4487:18:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                "typeName": {
                                  "id": 5909,
                                  "name": "address",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4487:7:13",
                                  "stateMutability": "nonpayable",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 5922,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 5912,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5856,
                                  "src": "4528:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5913,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5861,
                                    "src": "4537:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 5915,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 5914,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5893,
                                    "src": "4542:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4537:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 5916,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5861,
                                    "src": "4546:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 5920,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 5919,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 5917,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5893,
                                      "src": "4551:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 5918,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "4555:1:13",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "4551:5:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "4546:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 5911,
                                "name": "arbitragePairPools",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5854,
                                "src": "4509:18:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "function (address,address,address) returns (uint256,uint256,address)"
                                }
                              },
                              "id": 5921,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4509:49:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                "typeString": "tuple(uint256,uint256,address)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4453:105:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 5935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 5923,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5867,
                                  "src": "4573:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 5927,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 5926,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 5924,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5893,
                                    "src": "4581:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 5925,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "4585:1:13",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "4581:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "4573:14:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 5929,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5867,
                                      "src": "4603:7:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 5931,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 5930,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5893,
                                      "src": "4611:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "4603:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5932,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5906,
                                    "src": "4615:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 5933,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5908,
                                    "src": "4626:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 5928,
                                  "name": "getAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5648,
                                  "src": "4590:12:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 5934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "4590:47:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4573:64:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 5936,
                            "nodeType": "ExpressionStatement",
                            "src": "4573:64:13"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 5939,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 5937,
                                "name": "i",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5893,
                                "src": "4657:1:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 5938,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4662:1:13",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4657:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 5944,
                            "nodeType": "IfStatement",
                            "src": "4652:36:13",
                            "trueBody": {
                              "expression": {
                                "argumentTypes": null,
                                "id": 5942,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 5940,
                                  "name": "firstPair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5864,
                                  "src": "4666:9:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "id": 5941,
                                  "name": "_firstPair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5910,
                                  "src": "4678:10:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                "src": "4666:22:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "id": 5943,
                              "nodeType": "ExpressionStatement",
                              "src": "4666:22:13"
                            }
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5901,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5896,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5893,
                          "src": "4412:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5900,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5897,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5861,
                              "src": "4416:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 5898,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "4416:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5899,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4430:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "4416:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "4412:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 5946,
                      "initializationExpression": {
                        "assignments": [
                          5893
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5893,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 5946,
                            "src": "4400:6:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5892,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "4400:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5895,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5894,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4409:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4400:10:13"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5903,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "4433:3:13",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 5902,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5893,
                            "src": "4433:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5904,
                        "nodeType": "ExpressionStatement",
                        "src": "4433:3:13"
                      },
                      "nodeType": "ForStatement",
                      "src": "4395:305:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 5948,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5862,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5856,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5948,
                      "src": "4124:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5855,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4124:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5858,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5948,
                      "src": "4141:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5857,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4141:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5861,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5948,
                      "src": "4156:23:13",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5859,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4156:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5860,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4156:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4123:57:13"
                },
                "returnParameters": {
                  "id": 5868,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5864,
                      "mutability": "mutable",
                      "name": "firstPair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5948,
                      "src": "4199:17:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5863,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4199:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5867,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 5948,
                      "src": "4218:21:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5865,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4218:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5866,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4218:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4198:42:13"
                },
                "scope": 6210,
                "src": "4101:606:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6029,
                  "nodeType": "Block",
                  "src": "4926:392:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 5965,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5962,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5955,
                                "src": "4945:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 5963,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "4945:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 5964,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "4960:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "4945:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e56414c49445f50415448",
                            "id": 5966,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "4963:29:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9842a722bfae878b8949df0638ed5ceb7fd53e47f08109cc06ab797a166efe2c",
                              "typeString": "literal_string \"FeSwapLibrary: INVALID_PATH\""
                            },
                            "value": "FeSwapLibrary: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9842a722bfae878b8949df0638ed5ceb7fd53e47f08109cc06ab797a166efe2c",
                              "typeString": "literal_string \"FeSwapLibrary: INVALID_PATH\""
                            }
                          ],
                          "id": 5961,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "4937:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 5967,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4937:56:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 5968,
                      "nodeType": "ExpressionStatement",
                      "src": "4937:56:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5976,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 5969,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5959,
                          "src": "5004:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 5973,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5955,
                                "src": "5025:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 5974,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5025:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 5972,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "5014:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 5970,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "5018:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 5971,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5018:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 5975,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5014:23:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "5004:33:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 5977,
                      "nodeType": "ExpressionStatement",
                      "src": "5004:33:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 5982,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 5978,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5959,
                            "src": "5048:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 5980,
                          "indexExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 5979,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5056:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "5048:10:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 5981,
                          "name": "amountIn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5952,
                          "src": "5061:8:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5048:21:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 5983,
                      "nodeType": "ExpressionStatement",
                      "src": "5048:21:13"
                    },
                    {
                      "body": {
                        "id": 6027,
                        "nodeType": "Block",
                        "src": "5123:188:13",
                        "statements": [
                          {
                            "assignments": [
                              5998,
                              6000,
                              null,
                              null
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 5998,
                                "mutability": "mutable",
                                "name": "reserveIn",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 6027,
                                "src": "5139:14:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5997,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5139:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 6000,
                                "mutability": "mutable",
                                "name": "reserveOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 6027,
                                "src": "5155:15:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 5999,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5155:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              null,
                              null
                            ],
                            "id": 6012,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6002,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5950,
                                  "src": "5190:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 6003,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5955,
                                    "src": "5199:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 6005,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 6004,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5985,
                                    "src": "5204:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5199:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 6006,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5955,
                                    "src": "5208:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 6010,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6009,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 6007,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5985,
                                      "src": "5213:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 6008,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "5217:1:13",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "5213:5:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "5208:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 6001,
                                "name": "getReserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5559,
                                "src": "5178:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                                  "typeString": "function (address,address,address) view returns (uint256,uint256,address,uint256)"
                                }
                              },
                              "id": 6011,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "5178:42:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256,address,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "5138:82:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6025,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 6013,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5959,
                                  "src": "5235:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6017,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6016,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 6014,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5985,
                                    "src": "5243:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "+",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 6015,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5247:1:13",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "5243:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5235:14:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 6019,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5959,
                                      "src": "5265:7:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 6021,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 6020,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5985,
                                      "src": "5273:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5265:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6022,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5998,
                                    "src": "5277:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6023,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6000,
                                    "src": "5288:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6018,
                                  "name": "getAmountOut",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5648,
                                  "src": "5252:12:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6024,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5252:47:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5235:64:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6026,
                            "nodeType": "ExpressionStatement",
                            "src": "5235:64:13"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 5993,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 5988,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 5985,
                          "src": "5097:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 5992,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 5989,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 5955,
                              "src": "5101:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 5990,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5101:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 5991,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5115:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "5101:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5097:19:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 6028,
                      "initializationExpression": {
                        "assignments": [
                          5985
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 5985,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 6028,
                            "src": "5085:6:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 5984,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5085:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 5987,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 5986,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5094:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5085:10:13"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 5995,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "5118:3:13",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 5994,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5985,
                            "src": "5118:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5996,
                        "nodeType": "ExpressionStatement",
                        "src": "5118:3:13"
                      },
                      "nodeType": "ForStatement",
                      "src": "5080:231:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 6030,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "estimateAmountsOut",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 5956,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5950,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6030,
                      "src": "4823:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 5949,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "4823:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5952,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6030,
                      "src": "4840:13:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 5951,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4840:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 5955,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6030,
                      "src": "4855:23:13",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5953,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "4855:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 5954,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4855:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4822:57:13"
                },
                "returnParameters": {
                  "id": 5960,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 5959,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6030,
                      "src": "4903:21:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 5957,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "4903:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 5958,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "4903:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4902:23:13"
                },
                "scope": 6210,
                "src": "4795:523:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6123,
                  "nodeType": "Block",
                  "src": "5539:464:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6049,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6046,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6037,
                                "src": "5558:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 6047,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5558:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 6048,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5573:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "5558:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e56414c49445f50415448",
                            "id": 6050,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5576:29:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9842a722bfae878b8949df0638ed5ceb7fd53e47f08109cc06ab797a166efe2c",
                              "typeString": "literal_string \"FeSwapLibrary: INVALID_PATH\""
                            },
                            "value": "FeSwapLibrary: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9842a722bfae878b8949df0638ed5ceb7fd53e47f08109cc06ab797a166efe2c",
                              "typeString": "literal_string \"FeSwapLibrary: INVALID_PATH\""
                            }
                          ],
                          "id": 6045,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "5550:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6051,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5550:56:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6052,
                      "nodeType": "ExpressionStatement",
                      "src": "5550:56:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6060,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6053,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6043,
                          "src": "5617:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6057,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6037,
                                "src": "5638:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 6058,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5638:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6056,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "5627:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6054,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "5631:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6055,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "5631:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 6059,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5627:23:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "5617:33:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 6061,
                      "nodeType": "ExpressionStatement",
                      "src": "5617:33:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6069,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6062,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6043,
                            "src": "5661:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 6067,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6066,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6063,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6043,
                                "src": "5669:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 6064,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "5669:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 6065,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "5686:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "5669:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "5661:27:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 6068,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6034,
                          "src": "5691:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5661:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6070,
                      "nodeType": "ExpressionStatement",
                      "src": "5661:39:13"
                    },
                    {
                      "assignments": [
                        6072
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6072,
                          "mutability": "mutable",
                          "name": "reserveIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6123,
                          "src": "5711:14:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6071,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5711:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6073,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5711:14:13"
                    },
                    {
                      "assignments": [
                        6075
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6075,
                          "mutability": "mutable",
                          "name": "reserveOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6123,
                          "src": "5736:15:13",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6074,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "5736:4:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6076,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "5736:15:13"
                    },
                    {
                      "body": {
                        "id": 6121,
                        "nodeType": "Block",
                        "src": "5805:191:13",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6105,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6090,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6072,
                                    "src": "5821:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6091,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6075,
                                    "src": "5832:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6092,
                                    "name": "firstPair",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6040,
                                    "src": "5844:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "id": 6093,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "TupleExpression",
                                "src": "5820:34:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 6095,
                                    "name": "factory",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6032,
                                    "src": "5876:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 6096,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6037,
                                      "src": "5885:4:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 6100,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6099,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 6097,
                                        "name": "i",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6078,
                                        "src": "5890:1:13",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "-",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "31",
                                        "id": 6098,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "5894:1:13",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_1_by_1",
                                          "typeString": "int_const 1"
                                        },
                                        "value": "1"
                                      },
                                      "src": "5890:5:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5885:11:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 6101,
                                      "name": "path",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6037,
                                      "src": "5898:4:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                        "typeString": "address[] calldata"
                                      }
                                    },
                                    "id": 6103,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 6102,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6078,
                                      "src": "5903:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5898:7:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    },
                                    {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  ],
                                  "id": 6094,
                                  "name": "arbitragePairPools",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5854,
                                  "src": "5857:18:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_address_$",
                                    "typeString": "function (address,address,address) returns (uint256,uint256,address)"
                                  }
                                },
                                "id": 6104,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5857:49:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$",
                                  "typeString": "tuple(uint256,uint256,address)"
                                }
                              },
                              "src": "5820:86:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 6106,
                            "nodeType": "ExpressionStatement",
                            "src": "5820:86:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6119,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 6107,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6043,
                                  "src": "5921:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6111,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6110,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 6108,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6078,
                                    "src": "5929:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 6109,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "5933:1:13",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "5929:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "5921:14:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 6113,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6043,
                                      "src": "5950:7:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 6115,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 6114,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6078,
                                      "src": "5958:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "5950:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6116,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6072,
                                    "src": "5962:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6117,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6075,
                                    "src": "5973:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6112,
                                  "name": "getAmountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5702,
                                  "src": "5938:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6118,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5938:46:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5921:63:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6120,
                            "nodeType": "ExpressionStatement",
                            "src": "5921:63:13"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6086,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6084,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6078,
                          "src": "5793:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6085,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5797:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "5793:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 6122,
                      "initializationExpression": {
                        "assignments": [
                          6078
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6078,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 6122,
                            "src": "5767:6:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6077,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "5767:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 6083,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6082,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6079,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6037,
                              "src": "5776:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 6080,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "5776:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 6081,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "5790:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "5776:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "5767:24:13"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6088,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "--",
                          "prefix": false,
                          "src": "5800:3:13",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 6087,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6078,
                            "src": "5800:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6089,
                        "nodeType": "ExpressionStatement",
                        "src": "5800:3:13"
                      },
                      "nodeType": "ForStatement",
                      "src": "5762:234:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 6124,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "getAmountsIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6038,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6032,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6124,
                      "src": "5421:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6031,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5421:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6034,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6124,
                      "src": "5438:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6033,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5438:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6037,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6124,
                      "src": "5454:23:13",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6035,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "5454:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6036,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5454:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5420:58:13"
                },
                "returnParameters": {
                  "id": 6044,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6040,
                      "mutability": "mutable",
                      "name": "firstPair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6124,
                      "src": "5497:17:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6039,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "5497:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6043,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6124,
                      "src": "5516:21:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6041,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "5516:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6042,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "5516:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5496:42:13"
                },
                "scope": 6210,
                "src": "5399:604:13",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6208,
                  "nodeType": "Block",
                  "src": "6142:408:13",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6141,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6138,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6131,
                                "src": "6161:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 6139,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6161:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "32",
                              "id": 6140,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6176:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_2_by_1",
                                "typeString": "int_const 2"
                              },
                              "value": "2"
                            },
                            "src": "6161:16:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4665537761704c6962726172793a20494e56414c49445f50415448",
                            "id": 6142,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6179:29:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_9842a722bfae878b8949df0638ed5ceb7fd53e47f08109cc06ab797a166efe2c",
                              "typeString": "literal_string \"FeSwapLibrary: INVALID_PATH\""
                            },
                            "value": "FeSwapLibrary: INVALID_PATH"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_9842a722bfae878b8949df0638ed5ceb7fd53e47f08109cc06ab797a166efe2c",
                              "typeString": "literal_string \"FeSwapLibrary: INVALID_PATH\""
                            }
                          ],
                          "id": 6137,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "6153:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6143,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6153:56:13",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6144,
                      "nodeType": "ExpressionStatement",
                      "src": "6153:56:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6152,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6145,
                          "name": "amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6135,
                          "src": "6220:7:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6149,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6131,
                                "src": "6241:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              "id": 6150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6241:11:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 6148,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "NewExpression",
                            "src": "6230:10:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                              "typeString": "function (uint256) pure returns (uint256[] memory)"
                            },
                            "typeName": {
                              "baseType": {
                                "id": 6146,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "6234:4:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6147,
                              "length": null,
                              "nodeType": "ArrayTypeName",
                              "src": "6234:6:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                                "typeString": "uint256[]"
                              }
                            }
                          },
                          "id": 6151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6230:23:13",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                            "typeString": "uint256[] memory"
                          }
                        },
                        "src": "6220:33:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                          "typeString": "uint256[] memory"
                        }
                      },
                      "id": 6153,
                      "nodeType": "ExpressionStatement",
                      "src": "6220:33:13"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6161,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 6154,
                            "name": "amounts",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6135,
                            "src": "6264:7:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          },
                          "id": 6159,
                          "indexExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6158,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6155,
                                "name": "amounts",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6135,
                                "src": "6272:7:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                  "typeString": "uint256[] memory"
                                }
                              },
                              "id": 6156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "length",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "6272:14:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "-",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "31",
                              "id": 6157,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "6289:1:13",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_1_by_1",
                                "typeString": "int_const 1"
                              },
                              "value": "1"
                            },
                            "src": "6272:18:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "6264:27:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 6160,
                          "name": "amountOut",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6128,
                          "src": "6294:9:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6264:39:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6162,
                      "nodeType": "ExpressionStatement",
                      "src": "6264:39:13"
                    },
                    {
                      "body": {
                        "id": 6206,
                        "nodeType": "Block",
                        "src": "6357:186:13",
                        "statements": [
                          {
                            "assignments": [
                              6177,
                              6179,
                              null,
                              null
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6177,
                                "mutability": "mutable",
                                "name": "reserveIn",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 6206,
                                "src": "6373:14:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6176,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6373:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              {
                                "constant": false,
                                "id": 6179,
                                "mutability": "mutable",
                                "name": "reserveOut",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 6206,
                                "src": "6389:15:13",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6178,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6389:4:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              },
                              null,
                              null
                            ],
                            "id": 6191,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6181,
                                  "name": "factory",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6126,
                                  "src": "6423:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 6182,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6131,
                                    "src": "6432:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 6186,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6185,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 6183,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6164,
                                      "src": "6437:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "31",
                                      "id": 6184,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "6441:1:13",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_1_by_1",
                                        "typeString": "int_const 1"
                                      },
                                      "value": "1"
                                    },
                                    "src": "6437:5:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6432:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 6187,
                                    "name": "path",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6131,
                                    "src": "6445:4:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                      "typeString": "address[] calldata"
                                    }
                                  },
                                  "id": 6189,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 6188,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6164,
                                    "src": "6450:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "6445:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 6180,
                                "name": "getReserves",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 5559,
                                "src": "6411:11:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_view$_t_address_$_t_address_$_t_address_$returns$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                                  "typeString": "function (address,address,address) view returns (uint256,uint256,address,uint256)"
                                }
                              },
                              "id": 6190,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "6411:42:13",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$_t_uint256_$_t_uint256_$_t_address_$_t_uint256_$",
                                "typeString": "tuple(uint256,uint256,address,uint256)"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6372:81:13"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6204,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 6192,
                                  "name": "amounts",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6135,
                                  "src": "6468:7:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                    "typeString": "uint256[] memory"
                                  }
                                },
                                "id": 6196,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 6195,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "id": 6193,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6164,
                                    "src": "6476:1:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "-",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "hexValue": "31",
                                    "id": 6194,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "6480:1:13",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_1_by_1",
                                      "typeString": "int_const 1"
                                    },
                                    "value": "1"
                                  },
                                  "src": "6476:5:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "6468:14:13",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 6198,
                                      "name": "amounts",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6135,
                                      "src": "6497:7:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                                        "typeString": "uint256[] memory"
                                      }
                                    },
                                    "id": 6200,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "id": 6199,
                                      "name": "i",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6164,
                                      "src": "6505:1:13",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "6497:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6201,
                                    "name": "reserveIn",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6177,
                                    "src": "6509:9:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 6202,
                                    "name": "reserveOut",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6179,
                                    "src": "6520:10:13",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 6197,
                                  "name": "getAmountIn",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 5702,
                                  "src": "6485:11:13",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 6203,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6485:46:13",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6468:63:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6205,
                            "nodeType": "ExpressionStatement",
                            "src": "6468:63:13"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6172,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6170,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6164,
                          "src": "6345:1:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 6171,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6349:1:13",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "src": "6345:5:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 6207,
                      "initializationExpression": {
                        "assignments": [
                          6164
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 6164,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 6207,
                            "src": "6319:6:13",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 6163,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "6319:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 6169,
                        "initialValue": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6168,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 6165,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6131,
                              "src": "6328:4:13",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            "id": 6166,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "length",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "6328:11:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "-",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "31",
                            "id": 6167,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "6342:1:13",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_1_by_1",
                              "typeString": "int_const 1"
                            },
                            "value": "1"
                          },
                          "src": "6328:15:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "6319:24:13"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 6174,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "--",
                          "prefix": false,
                          "src": "6352:3:13",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 6173,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6164,
                            "src": "6352:1:13",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6175,
                        "nodeType": "ExpressionStatement",
                        "src": "6352:3:13"
                      },
                      "nodeType": "ForStatement",
                      "src": "6314:229:13"
                    }
                  ]
                },
                "documentation": null,
                "id": 6209,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "estimateAmountsIn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6132,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6126,
                      "mutability": "mutable",
                      "name": "factory",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6209,
                      "src": "6038:15:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6125,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "6038:7:13",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6128,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6209,
                      "src": "6055:14:13",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6127,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6055:4:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6131,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6209,
                      "src": "6071:23:13",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6129,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "6071:7:13",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 6130,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6071:9:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6037:58:13"
                },
                "returnParameters": {
                  "id": 6136,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6135,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6209,
                      "src": "6119:21:13",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 6133,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "6119:4:13",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 6134,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "6119:6:13",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6118:23:13"
                },
                "scope": 6210,
                "src": "6011:539:13",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 6211,
            "src": "212:6343:13"
          }
        ],
        "src": "37:6520:13"
      }
    },
    "contracts/libraries/FeSwapOracleLibrary.sol": {
      "id": 14,
      "AST": {
        "absolutePath": "contracts/libraries/FeSwapOracleLibrary.sol",
        "exportedSymbols": {
          "FeSwapOracleLibrary": [
            6317
          ]
        },
        "id": 6318,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6212,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:14"
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapPair.sol",
            "file": "../interfaces/IFeSwapPair.sol",
            "id": 6213,
            "nodeType": "ImportDirective",
            "scope": 6318,
            "sourceUnit": 4948,
            "src": "65:39:14",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "absolutePath": "contracts/libraries/FixedPoint.sol",
            "file": "./FixedPoint.sol",
            "id": 6214,
            "nodeType": "ImportDirective",
            "scope": 6318,
            "sourceUnit": 6559,
            "src": "106:26:14",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6317,
            "linearizedBaseContracts": [
              6317
            ],
            "name": "FeSwapOracleLibrary",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 6216,
                "libraryName": {
                  "contractScope": null,
                  "id": 6215,
                  "name": "FixedPoint",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6558,
                  "src": "270:10:14",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FixedPoint_$6558",
                    "typeString": "library FixedPoint"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "264:23:14",
                "typeName": null
              },
              {
                "body": {
                  "id": 6231,
                  "nodeType": "Block",
                  "src": "472:59:14",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6228,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6223,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "497:5:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 6224,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "497:15:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "%",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              },
                              "id": 6227,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "hexValue": "32",
                                "id": 6225,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "515:1:14",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2_by_1",
                                  "typeString": "int_const 2"
                                },
                                "value": "2"
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "**",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "3332",
                                "id": 6226,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "520:2:14",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_32_by_1",
                                  "typeString": "int_const 32"
                                },
                                "value": "32"
                              },
                              "src": "515:7:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_4294967296_by_1",
                                "typeString": "int_const 4294967296"
                              }
                            },
                            "src": "497:25:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6222,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "490:6:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint32_$",
                            "typeString": "type(uint32)"
                          },
                          "typeName": {
                            "id": 6221,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "490:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6229,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "490:33:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "functionReturnParameters": 6220,
                      "id": 6230,
                      "nodeType": "Return",
                      "src": "483:40:14"
                    }
                  ]
                },
                "documentation": null,
                "id": 6232,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "currentBlockTimestamp",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6217,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "438:2:14"
                },
                "returnParameters": {
                  "id": 6220,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6219,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6232,
                      "src": "464:6:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6218,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "464:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "463:8:14"
                },
                "scope": 6317,
                "src": "408:123:14",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6315,
                  "nodeType": "Block",
                  "src": "792:896:14",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6246,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6243,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6241,
                          "src": "803:14:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "id": 6244,
                            "name": "currentBlockTimestamp",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6232,
                            "src": "820:21:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_view$__$returns$_t_uint32_$",
                              "typeString": "function () view returns (uint32)"
                            }
                          },
                          "id": 6245,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "820:23:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "803:40:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "id": 6247,
                      "nodeType": "ExpressionStatement",
                      "src": "803:40:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6248,
                          "name": "price0Cumulative",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6237,
                          "src": "854:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6250,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6234,
                                  "src": "885:4:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 6249,
                                "name": "IFeSwapPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4947,
                                "src": "873:11:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                  "typeString": "type(contract IFeSwapPair)"
                                }
                              },
                              "id": 6251,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "873:17:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                "typeString": "contract IFeSwapPair"
                              }
                            },
                            "id": 6252,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "price0CumulativeLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4871,
                            "src": "873:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 6253,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "873:40:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "854:59:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6255,
                      "nodeType": "ExpressionStatement",
                      "src": "854:59:14"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6262,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6256,
                          "name": "price1Cumulative",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6239,
                          "src": "924:16:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [],
                          "expression": {
                            "argumentTypes": [],
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6258,
                                  "name": "pair",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6234,
                                  "src": "955:4:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "id": 6257,
                                "name": "IFeSwapPair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 4947,
                                "src": "943:11:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                  "typeString": "type(contract IFeSwapPair)"
                                }
                              },
                              "id": 6259,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "943:17:14",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                                "typeString": "contract IFeSwapPair"
                              }
                            },
                            "id": 6260,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "price1CumulativeLast",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 4876,
                            "src": "943:38:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_external_view$__$returns$_t_uint256_$",
                              "typeString": "function () view external returns (uint256)"
                            }
                          },
                          "id": 6261,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "943:40:14",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "924:59:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6263,
                      "nodeType": "ExpressionStatement",
                      "src": "924:59:14"
                    },
                    {
                      "assignments": [
                        6265,
                        6267,
                        6269,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6265,
                          "mutability": "mutable",
                          "name": "reserve0",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6315,
                          "src": "1098:16:14",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 6264,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "1098:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 6267,
                          "mutability": "mutable",
                          "name": "reserve1",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6315,
                          "src": "1116:16:14",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint112",
                            "typeString": "uint112"
                          },
                          "typeName": {
                            "id": 6266,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "1116:7:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 6269,
                          "mutability": "mutable",
                          "name": "blockTimestampLast",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6315,
                          "src": "1134:25:14",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          },
                          "typeName": {
                            "id": 6268,
                            "name": "uint32",
                            "nodeType": "ElementaryTypeName",
                            "src": "1134:6:14",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint32",
                              "typeString": "uint32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 6275,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6271,
                                "name": "pair",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6234,
                                "src": "1177:4:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              ],
                              "id": 6270,
                              "name": "IFeSwapPair",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 4947,
                              "src": "1165:11:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_contract$_IFeSwapPair_$4947_$",
                                "typeString": "type(contract IFeSwapPair)"
                              }
                            },
                            "id": 6272,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1165:17:14",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_IFeSwapPair_$4947",
                              "typeString": "contract IFeSwapPair"
                            }
                          },
                          "id": 6273,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "getReserves",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 4866,
                          "src": "1165:29:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_external_view$__$returns$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                            "typeString": "function () view external returns (uint112,uint112,uint32,uint256)"
                          }
                        },
                        "id": 6274,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1165:31:14",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_uint112_$_t_uint112_$_t_uint32_$_t_uint256_$",
                          "typeString": "tuple(uint112,uint112,uint32,uint256)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1097:99:14"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        },
                        "id": 6278,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6276,
                          "name": "blockTimestampLast",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6269,
                          "src": "1211:18:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "id": 6277,
                          "name": "blockTimestamp",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6241,
                          "src": "1233:14:14",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint32",
                            "typeString": "uint32"
                          }
                        },
                        "src": "1211:36:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 6314,
                      "nodeType": "IfStatement",
                      "src": "1207:474:14",
                      "trueBody": {
                        "id": 6313,
                        "nodeType": "Block",
                        "src": "1249:432:14",
                        "statements": [
                          {
                            "assignments": [
                              6280
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6280,
                                "mutability": "mutable",
                                "name": "timeElapsed",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 6313,
                                "src": "1312:18:14",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                },
                                "typeName": {
                                  "id": 6279,
                                  "name": "uint32",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1312:6:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 6284,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              },
                              "id": 6283,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6281,
                                "name": "blockTimestamp",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6241,
                                "src": "1333:14:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "-",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 6282,
                                "name": "blockTimestampLast",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6269,
                                "src": "1350:18:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint32",
                                  "typeString": "uint32"
                                }
                              },
                              "src": "1333:35:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint32",
                                "typeString": "uint32"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "1312:56:14"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6297,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 6285,
                                "name": "price0Cumulative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6237,
                                "src": "1459:16:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6296,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 6290,
                                            "name": "reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6267,
                                            "src": "1504:8:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 6291,
                                            "name": "reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6265,
                                            "src": "1514:8:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            },
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 6288,
                                            "name": "FixedPoint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6558,
                                            "src": "1484:10:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$6558_$",
                                              "typeString": "type(library FixedPoint)"
                                            }
                                          },
                                          "id": 6289,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "fraction",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6475,
                                          "src": "1484:19:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint112_$_t_uint112_$returns$_t_struct$_uq112x112_$6323_memory_ptr_$",
                                            "typeString": "function (uint112,uint112) pure returns (struct FixedPoint.uq112x112 memory)"
                                          }
                                        },
                                        "id": 6292,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1484:39:14",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                                          "typeString": "struct FixedPoint.uq112x112 memory"
                                        }
                                      },
                                      "id": 6293,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "_x",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6322,
                                      "src": "1484:42:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    ],
                                    "id": 6287,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1479:4:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 6286,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1479:4:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 6294,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1479:48:14",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6295,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6280,
                                  "src": "1530:11:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "1479:62:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1459:82:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6298,
                            "nodeType": "ExpressionStatement",
                            "src": "1459:82:14"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6311,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 6299,
                                "name": "price1Cumulative",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6239,
                                "src": "1587:16:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6310,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "arguments": [
                                          {
                                            "argumentTypes": null,
                                            "id": 6304,
                                            "name": "reserve0",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6265,
                                            "src": "1632:8:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          },
                                          {
                                            "argumentTypes": null,
                                            "id": 6305,
                                            "name": "reserve1",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6267,
                                            "src": "1642:8:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": [
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            },
                                            {
                                              "typeIdentifier": "t_uint112",
                                              "typeString": "uint112"
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 6302,
                                            "name": "FixedPoint",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6558,
                                            "src": "1612:10:14",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_contract$_FixedPoint_$6558_$",
                                              "typeString": "type(library FixedPoint)"
                                            }
                                          },
                                          "id": 6303,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "fraction",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6475,
                                          "src": "1612:19:14",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_function_internal_pure$_t_uint112_$_t_uint112_$returns$_t_struct$_uq112x112_$6323_memory_ptr_$",
                                            "typeString": "function (uint112,uint112) pure returns (struct FixedPoint.uq112x112 memory)"
                                          }
                                        },
                                        "id": 6306,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "kind": "functionCall",
                                        "lValueRequested": false,
                                        "names": [],
                                        "nodeType": "FunctionCall",
                                        "src": "1612:39:14",
                                        "tryCall": false,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                                          "typeString": "struct FixedPoint.uq112x112 memory"
                                        }
                                      },
                                      "id": 6307,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "_x",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6322,
                                      "src": "1612:42:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint224",
                                        "typeString": "uint224"
                                      }
                                    ],
                                    "id": 6301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1607:4:14",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": {
                                      "id": 6300,
                                      "name": "uint",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1607:4:14",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 6308,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1607:48:14",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6309,
                                  "name": "timeElapsed",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6280,
                                  "src": "1658:11:14",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint32",
                                    "typeString": "uint32"
                                  }
                                },
                                "src": "1607:62:14",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1587:82:14",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6312,
                            "nodeType": "ExpressionStatement",
                            "src": "1587:82:14"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 6316,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "currentCumulativePrices",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6235,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6234,
                      "mutability": "mutable",
                      "name": "pair",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6316,
                      "src": "680:12:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6233,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "680:7:14",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "669:30:14"
                },
                "returnParameters": {
                  "id": 6242,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6237,
                      "mutability": "mutable",
                      "name": "price0Cumulative",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6316,
                      "src": "723:21:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6236,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "723:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6239,
                      "mutability": "mutable",
                      "name": "price1Cumulative",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6316,
                      "src": "746:21:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6238,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "746:4:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6241,
                      "mutability": "mutable",
                      "name": "blockTimestamp",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6316,
                      "src": "769:21:14",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint32",
                        "typeString": "uint32"
                      },
                      "typeName": {
                        "id": 6240,
                        "name": "uint32",
                        "nodeType": "ElementaryTypeName",
                        "src": "769:6:14",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint32",
                          "typeString": "uint32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "722:69:14"
                },
                "scope": 6317,
                "src": "637:1051:14",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 6318,
            "src": "229:1462:14"
          }
        ],
        "src": "37:1656:14"
      }
    },
    "contracts/libraries/FixedPoint.sol": {
      "id": 15,
      "AST": {
        "absolutePath": "contracts/libraries/FixedPoint.sol",
        "exportedSymbols": {
          "FixedPoint": [
            6558
          ]
        },
        "id": 6559,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6319,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:15"
          },
          {
            "absolutePath": "contracts/libraries/Babylonian.sol",
            "file": "./Babylonian.sol",
            "id": 6320,
            "nodeType": "ImportDirective",
            "scope": 6559,
            "sourceUnit": 5478,
            "src": "65:26:15",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6558,
            "linearizedBaseContracts": [
              6558
            ],
            "name": "FixedPoint",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "canonicalName": "FixedPoint.uq112x112",
                "id": 6323,
                "members": [
                  {
                    "constant": false,
                    "id": 6322,
                    "mutability": "mutable",
                    "name": "_x",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 6323,
                    "src": "315:10:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint224",
                      "typeString": "uint224"
                    },
                    "typeName": {
                      "id": 6321,
                      "name": "uint224",
                      "nodeType": "ElementaryTypeName",
                      "src": "315:7:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "uq112x112",
                "nodeType": "StructDefinition",
                "scope": 6558,
                "src": "287:46:15",
                "visibility": "public"
              },
              {
                "canonicalName": "FixedPoint.uq144x112",
                "id": 6326,
                "members": [
                  {
                    "constant": false,
                    "id": 6325,
                    "mutability": "mutable",
                    "name": "_x",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 6326,
                    "src": "431:7:15",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6324,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "431:4:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "uq144x112",
                "nodeType": "StructDefinition",
                "scope": 6558,
                "src": "403:43:15",
                "visibility": "public"
              },
              {
                "constant": true,
                "id": 6329,
                "mutability": "constant",
                "name": "RESOLUTION",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6558,
                "src": "454:39:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 6327,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "454:5:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "313132",
                  "id": 6328,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "490:3:15",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_112_by_1",
                    "typeString": "int_const 112"
                  },
                  "value": "112"
                },
                "visibility": "private"
              },
              {
                "constant": true,
                "id": 6337,
                "mutability": "constant",
                "name": "Q112",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6558,
                "src": "500:50:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 6330,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "500:4:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "id": 6336,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "arguments": [
                      {
                        "argumentTypes": null,
                        "hexValue": "31",
                        "id": 6333,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "number",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "534:1:15",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        },
                        "value": "1"
                      }
                    ],
                    "expression": {
                      "argumentTypes": [
                        {
                          "typeIdentifier": "t_rational_1_by_1",
                          "typeString": "int_const 1"
                        }
                      ],
                      "id": 6332,
                      "isConstant": false,
                      "isLValue": false,
                      "isPure": true,
                      "lValueRequested": false,
                      "nodeType": "ElementaryTypeNameExpression",
                      "src": "529:4:15",
                      "typeDescriptions": {
                        "typeIdentifier": "t_type$_t_uint256_$",
                        "typeString": "type(uint256)"
                      },
                      "typeName": {
                        "id": 6331,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "529:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": null,
                          "typeString": null
                        }
                      }
                    },
                    "id": 6334,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "typeConversion",
                    "lValueRequested": false,
                    "names": [],
                    "nodeType": "FunctionCall",
                    "src": "529:7:15",
                    "tryCall": false,
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "<<",
                  "rightExpression": {
                    "argumentTypes": null,
                    "id": 6335,
                    "name": "RESOLUTION",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6329,
                    "src": "540:10:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "src": "529:21:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "private"
              },
              {
                "constant": true,
                "id": 6342,
                "mutability": "constant",
                "name": "Q224",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6558,
                "src": "557:47:15",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 6338,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "557:4:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  },
                  "id": 6341,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "id": 6339,
                    "name": "Q112",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6337,
                    "src": "586:4:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "<<",
                  "rightExpression": {
                    "argumentTypes": null,
                    "id": 6340,
                    "name": "RESOLUTION",
                    "nodeType": "Identifier",
                    "overloadedDeclarations": [],
                    "referencedDeclaration": 6329,
                    "src": "594:10:15",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint8",
                      "typeString": "uint8"
                    }
                  },
                  "src": "586:18:15",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "visibility": "private"
              },
              {
                "body": {
                  "id": 6358,
                  "nodeType": "Block",
                  "src": "721:61:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 6355,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6352,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6344,
                                  "src": "757:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                ],
                                "id": 6351,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "749:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 6350,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "749:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6353,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "749:10:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6354,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6329,
                              "src": "763:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "749:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 6349,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6323,
                          "src": "739:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$6323_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 6356,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "739:35:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 6348,
                      "id": 6357,
                      "nodeType": "Return",
                      "src": "732:42:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6359,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6345,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6344,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "669:9:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6343,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "669:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "668:11:15"
                },
                "returnParameters": {
                  "id": 6348,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6347,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6359,
                      "src": "703:16:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6346,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "703:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "702:18:15"
                },
                "scope": 6558,
                "src": "653:129:15",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6375,
                  "nodeType": "Block",
                  "src": "902:61:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6372,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6369,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6361,
                                  "src": "938:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint144",
                                    "typeString": "uint144"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint144",
                                    "typeString": "uint144"
                                  }
                                ],
                                "id": 6368,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "930:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint256_$",
                                  "typeString": "type(uint256)"
                                },
                                "typeName": {
                                  "id": 6367,
                                  "name": "uint256",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "930:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6370,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "930:10:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6371,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6329,
                              "src": "944:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "930:24:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6366,
                          "name": "uq144x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6326,
                          "src": "920:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq144x112_$6326_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq144x112 storage pointer)"
                          }
                        },
                        "id": 6373,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "920:35:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$6326_memory_ptr",
                          "typeString": "struct FixedPoint.uq144x112 memory"
                        }
                      },
                      "functionReturnParameters": 6365,
                      "id": 6374,
                      "nodeType": "Return",
                      "src": "913:42:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6376,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode144",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6362,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6361,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6376,
                      "src": "850:9:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint144",
                        "typeString": "uint144"
                      },
                      "typeName": {
                        "id": 6360,
                        "name": "uint144",
                        "nodeType": "ElementaryTypeName",
                        "src": "850:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "849:11:15"
                },
                "returnParameters": {
                  "id": 6365,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6364,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6376,
                      "src": "884:16:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$6326_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6363,
                        "name": "uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6326,
                        "src": "884:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$6326_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "883:18:15"
                },
                "scope": 6558,
                "src": "831:132:15",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6402,
                  "nodeType": "Block",
                  "src": "1122:110:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "id": 6388,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6386,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6380,
                              "src": "1141:1:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6387,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1146:1:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1141:6:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a204449565f42595f5a45524f",
                            "id": 6389,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1149:25:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fb797fc20bb06d860bbe348d99030bb226d980421b724f94accde8487e338e12",
                              "typeString": "literal_string \"FixedPoint: DIV_BY_ZERO\""
                            },
                            "value": "FixedPoint: DIV_BY_ZERO"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_fb797fc20bb06d860bbe348d99030bb226d980421b724f94accde8487e338e12",
                              "typeString": "literal_string \"FixedPoint: DIV_BY_ZERO\""
                            }
                          ],
                          "id": 6385,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1133:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6390,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1133:42:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6391,
                      "nodeType": "ExpressionStatement",
                      "src": "1133:42:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 6399,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6393,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6378,
                                "src": "1203:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 6394,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6322,
                              "src": "1203:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 6397,
                                  "name": "x",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6380,
                                  "src": "1221:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint112",
                                    "typeString": "uint112"
                                  }
                                ],
                                "id": 6396,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "1213:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_uint224_$",
                                  "typeString": "type(uint224)"
                                },
                                "typeName": {
                                  "id": 6395,
                                  "name": "uint224",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "1213:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": null,
                                    "typeString": null
                                  }
                                }
                              },
                              "id": 6398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1213:10:15",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "src": "1203:20:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 6392,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6323,
                          "src": "1193:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$6323_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 6400,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1193:31:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 6384,
                      "id": 6401,
                      "nodeType": "Return",
                      "src": "1186:38:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6403,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "div",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6381,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6378,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6403,
                      "src": "1047:21:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6377,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "1047:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6380,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6403,
                      "src": "1070:9:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6379,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1070:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1046:34:15"
                },
                "returnParameters": {
                  "id": 6384,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6383,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6403,
                      "src": "1104:16:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6382,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "1104:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1103:18:15"
                },
                "scope": 6558,
                "src": "1034:198:15",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6445,
                  "nodeType": "Block",
                  "src": "1415:168:15",
                  "statements": [
                    {
                      "assignments": [
                        6413
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6413,
                          "mutability": "mutable",
                          "name": "z",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6445,
                          "src": "1426:6:15",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 6412,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "1426:4:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6414,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1426:6:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6437,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6418,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6416,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6407,
                                "src": "1451:1:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6417,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1456:1:15",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "1451:6:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6436,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6427,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 6419,
                                        "name": "z",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6413,
                                        "src": "1462:1:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6426,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "arguments": [
                                            {
                                              "argumentTypes": null,
                                              "expression": {
                                                "argumentTypes": null,
                                                "id": 6422,
                                                "name": "self",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6405,
                                                "src": "1471:4:15",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                                }
                                              },
                                              "id": 6423,
                                              "isConstant": false,
                                              "isLValue": true,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "memberName": "_x",
                                              "nodeType": "MemberAccess",
                                              "referencedDeclaration": 6322,
                                              "src": "1471:7:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint224",
                                                "typeString": "uint224"
                                              }
                                            }
                                          ],
                                          "expression": {
                                            "argumentTypes": [
                                              {
                                                "typeIdentifier": "t_uint224",
                                                "typeString": "uint224"
                                              }
                                            ],
                                            "id": 6421,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1466:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_uint256_$",
                                              "typeString": "type(uint256)"
                                            },
                                            "typeName": {
                                              "id": 6420,
                                              "name": "uint",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1466:4:15",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          },
                                          "id": 6424,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "kind": "typeConversion",
                                          "lValueRequested": false,
                                          "names": [],
                                          "nodeType": "FunctionCall",
                                          "src": "1466:13:15",
                                          "tryCall": false,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 6425,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6407,
                                          "src": "1482:1:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "1466:17:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "1462:21:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6428,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "1461:23:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6429,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6407,
                                  "src": "1487:1:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "1461:27:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6433,
                                      "name": "self",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6405,
                                      "src": "1497:4:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                                        "typeString": "struct FixedPoint.uq112x112 memory"
                                      }
                                    },
                                    "id": 6434,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "_x",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6322,
                                    "src": "1497:7:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  ],
                                  "id": 6432,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "1492:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_uint256_$",
                                    "typeString": "type(uint256)"
                                  },
                                  "typeName": {
                                    "id": 6431,
                                    "name": "uint",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "1492:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 6435,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "1492:13:15",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1461:44:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1451:54:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a204d554c5449504c49434154494f4e5f4f564552464c4f57",
                            "id": 6438,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1507:37:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c49d28a1a0a9590848dc8e15e2ce94a0e18d974f72b2d7169c2f9169e1ee31e8",
                              "typeString": "literal_string \"FixedPoint: MULTIPLICATION_OVERFLOW\""
                            },
                            "value": "FixedPoint: MULTIPLICATION_OVERFLOW"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c49d28a1a0a9590848dc8e15e2ce94a0e18d974f72b2d7169c2f9169e1ee31e8",
                              "typeString": "literal_string \"FixedPoint: MULTIPLICATION_OVERFLOW\""
                            }
                          ],
                          "id": 6415,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1443:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1443:102:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6440,
                      "nodeType": "ExpressionStatement",
                      "src": "1443:102:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6442,
                            "name": "z",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6413,
                            "src": "1573:1:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6441,
                          "name": "uq144x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6326,
                          "src": "1563:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq144x112_$6326_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq144x112 storage pointer)"
                          }
                        },
                        "id": 6443,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1563:12:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$6326_memory_ptr",
                          "typeString": "struct FixedPoint.uq144x112 memory"
                        }
                      },
                      "functionReturnParameters": 6411,
                      "id": 6444,
                      "nodeType": "Return",
                      "src": "1556:19:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6446,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6408,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6405,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6446,
                      "src": "1343:21:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6404,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "1343:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6407,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6446,
                      "src": "1366:6:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6406,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1366:4:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1342:31:15"
                },
                "returnParameters": {
                  "id": 6411,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6410,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6446,
                      "src": "1397:16:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$6326_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6409,
                        "name": "uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6326,
                        "src": "1397:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$6326_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1396:18:15"
                },
                "scope": 6558,
                "src": "1330:253:15",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6474,
                  "nodeType": "Block",
                  "src": "1838:147:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint112",
                              "typeString": "uint112"
                            },
                            "id": 6458,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6456,
                              "name": "denominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6450,
                              "src": "1857:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6457,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "1871:1:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "1857:15:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a204449565f42595f5a45524f",
                            "id": 6459,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1874:25:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_fb797fc20bb06d860bbe348d99030bb226d980421b724f94accde8487e338e12",
                              "typeString": "literal_string \"FixedPoint: DIV_BY_ZERO\""
                            },
                            "value": "FixedPoint: DIV_BY_ZERO"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_fb797fc20bb06d860bbe348d99030bb226d980421b724f94accde8487e338e12",
                              "typeString": "literal_string \"FixedPoint: DIV_BY_ZERO\""
                            }
                          ],
                          "id": 6455,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1849:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6460,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1849:51:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6461,
                      "nodeType": "ExpressionStatement",
                      "src": "1849:51:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 6471,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  },
                                  "id": 6468,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 6465,
                                        "name": "numerator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6448,
                                        "src": "1937:9:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_uint112",
                                          "typeString": "uint112"
                                        }
                                      ],
                                      "id": 6464,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1929:7:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint224_$",
                                        "typeString": "type(uint224)"
                                      },
                                      "typeName": {
                                        "id": 6463,
                                        "name": "uint224",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1929:7:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 6466,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1929:18:15",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint224",
                                      "typeString": "uint224"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "<<",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 6467,
                                    "name": "RESOLUTION",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6329,
                                    "src": "1951:10:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint8",
                                      "typeString": "uint8"
                                    }
                                  },
                                  "src": "1929:32:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                }
                              ],
                              "id": 6469,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1928:34:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "/",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6470,
                              "name": "denominator",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6450,
                              "src": "1965:11:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint112",
                                "typeString": "uint112"
                              }
                            },
                            "src": "1928:48:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 6462,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6323,
                          "src": "1918:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$6323_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 6472,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1918:59:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 6454,
                      "id": 6473,
                      "nodeType": "Return",
                      "src": "1911:66:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6475,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "fraction",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6451,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6448,
                      "mutability": "mutable",
                      "name": "numerator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6475,
                      "src": "1757:17:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6447,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1757:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6450,
                      "mutability": "mutable",
                      "name": "denominator",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6475,
                      "src": "1776:19:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6449,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "1776:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1756:40:15"
                },
                "returnParameters": {
                  "id": 6454,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6453,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6475,
                      "src": "1820:16:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6452,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "1820:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1819:18:15"
                },
                "scope": 6558,
                "src": "1739:246:15",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6490,
                  "nodeType": "Block",
                  "src": "2142:56:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 6487,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6484,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6477,
                                "src": "2168:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 6485,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6322,
                              "src": "2168:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6486,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6329,
                              "src": "2179:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "2168:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 6483,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2160:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint112_$",
                            "typeString": "type(uint112)"
                          },
                          "typeName": {
                            "id": 6482,
                            "name": "uint112",
                            "nodeType": "ElementaryTypeName",
                            "src": "2160:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6488,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2160:30:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "functionReturnParameters": 6481,
                      "id": 6489,
                      "nodeType": "Return",
                      "src": "2153:37:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6491,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6478,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6477,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6491,
                      "src": "2087:21:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6476,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "2087:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2086:23:15"
                },
                "returnParameters": {
                  "id": 6481,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6480,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6491,
                      "src": "2133:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6479,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "2133:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2132:9:15"
                },
                "scope": 6558,
                "src": "2071:127:15",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6506,
                  "nodeType": "Block",
                  "src": "2358:56:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6503,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6500,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6493,
                                "src": "2384:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq144x112_$6326_memory_ptr",
                                  "typeString": "struct FixedPoint.uq144x112 memory"
                                }
                              },
                              "id": 6501,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6325,
                              "src": "2384:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">>",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6502,
                              "name": "RESOLUTION",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6329,
                              "src": "2395:10:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint8",
                                "typeString": "uint8"
                              }
                            },
                            "src": "2384:21:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 6499,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "lValueRequested": false,
                          "nodeType": "ElementaryTypeNameExpression",
                          "src": "2376:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_uint144_$",
                            "typeString": "type(uint144)"
                          },
                          "typeName": {
                            "id": 6498,
                            "name": "uint144",
                            "nodeType": "ElementaryTypeName",
                            "src": "2376:7:15",
                            "typeDescriptions": {
                              "typeIdentifier": null,
                              "typeString": null
                            }
                          }
                        },
                        "id": 6504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "typeConversion",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2376:30:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "functionReturnParameters": 6497,
                      "id": 6505,
                      "nodeType": "Return",
                      "src": "2369:37:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6507,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "decode144",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6494,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6493,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6507,
                      "src": "2303:21:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq144x112_$6326_memory_ptr",
                        "typeString": "struct FixedPoint.uq144x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6492,
                        "name": "uq144x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6326,
                        "src": "2303:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq144x112_$6326_storage_ptr",
                          "typeString": "struct FixedPoint.uq144x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2302:23:15"
                },
                "returnParameters": {
                  "id": 6497,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6496,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6507,
                      "src": "2349:7:15",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint144",
                        "typeString": "uint144"
                      },
                      "typeName": {
                        "id": 6495,
                        "name": "uint144",
                        "nodeType": "ElementaryTypeName",
                        "src": "2349:7:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint144",
                          "typeString": "uint144"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2348:9:15"
                },
                "scope": 6558,
                "src": "2284:130:15",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6532,
                  "nodeType": "Block",
                  "src": "2549:123:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            },
                            "id": 6518,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 6515,
                                "name": "self",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6509,
                                "src": "2568:4:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                                  "typeString": "struct FixedPoint.uq112x112 memory"
                                }
                              },
                              "id": 6516,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "_x",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6322,
                              "src": "2568:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint224",
                                "typeString": "uint224"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "!=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "hexValue": "30",
                              "id": 6517,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "number",
                              "lValueRequested": false,
                              "nodeType": "Literal",
                              "src": "2579:1:15",
                              "subdenomination": null,
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_0_by_1",
                                "typeString": "int_const 0"
                              },
                              "value": "0"
                            },
                            "src": "2568:12:15",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4669786564506f696e743a205a45524f5f5245434950524f43414c",
                            "id": 6519,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "2582:29:15",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_43c6fe054a2c2008a0c5b0d1940d576de140447d22d0753abd129ca5f43acb8b",
                              "typeString": "literal_string \"FixedPoint: ZERO_RECIPROCAL\""
                            },
                            "value": "FixedPoint: ZERO_RECIPROCAL"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_43c6fe054a2c2008a0c5b0d1940d576de140447d22d0753abd129ca5f43acb8b",
                              "typeString": "literal_string \"FixedPoint: ZERO_RECIPROCAL\""
                            }
                          ],
                          "id": 6514,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "2560:7:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2560:52:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6521,
                      "nodeType": "ExpressionStatement",
                      "src": "2560:52:15"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6528,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 6525,
                                  "name": "Q224",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6342,
                                  "src": "2648:4:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6526,
                                    "name": "self",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6509,
                                    "src": "2655:4:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                                      "typeString": "struct FixedPoint.uq112x112 memory"
                                    }
                                  },
                                  "id": 6527,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "_x",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6322,
                                  "src": "2655:7:15",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint224",
                                    "typeString": "uint224"
                                  }
                                },
                                "src": "2648:14:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6524,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2640:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 6523,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "2640:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6529,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2640:23:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 6522,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6323,
                          "src": "2630:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$6323_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 6530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2630:34:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 6513,
                      "id": 6531,
                      "nodeType": "Return",
                      "src": "2623:41:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6533,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "reciprocal",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6510,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6509,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6533,
                      "src": "2485:21:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6508,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "2485:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2484:23:15"
                },
                "returnParameters": {
                  "id": 6513,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6512,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6533,
                      "src": "2531:16:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6511,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "2531:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2530:18:15"
                },
                "scope": 6558,
                "src": "2465:207:15",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6556,
                  "nodeType": "Block",
                  "src": "2793:85:15",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6552,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 6547,
                                            "name": "self",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 6535,
                                            "src": "2853:4:15",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                                              "typeString": "struct FixedPoint.uq112x112 memory"
                                            }
                                          },
                                          "id": 6548,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "_x",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 6322,
                                          "src": "2853:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint224",
                                            "typeString": "uint224"
                                          }
                                        ],
                                        "id": 6546,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "2845:7:15",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_uint256_$",
                                          "typeString": "type(uint256)"
                                        },
                                        "typeName": {
                                          "id": 6545,
                                          "name": "uint256",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "2845:7:15",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 6549,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2845:16:15",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 6543,
                                      "name": "Babylonian",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5477,
                                      "src": "2829:10:15",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_Babylonian_$5477_$",
                                        "typeString": "type(library Babylonian)"
                                      }
                                    },
                                    "id": 6544,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sqrt",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 5476,
                                    "src": "2829:15:15",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 6550,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2829:33:15",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "<<",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "3536",
                                  "id": 6551,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2866:2:15",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_56_by_1",
                                    "typeString": "int_const 56"
                                  },
                                  "value": "56"
                                },
                                "src": "2829:39:15",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "id": 6542,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "2821:7:15",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 6541,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "2821:7:15",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6553,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2821:48:15",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          ],
                          "id": 6540,
                          "name": "uq112x112",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6323,
                          "src": "2811:9:15",
                          "typeDescriptions": {
                            "typeIdentifier": "t_type$_t_struct$_uq112x112_$6323_storage_ptr_$",
                            "typeString": "type(struct FixedPoint.uq112x112 storage pointer)"
                          }
                        },
                        "id": 6554,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "structConstructorCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2811:59:15",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                          "typeString": "struct FixedPoint.uq112x112 memory"
                        }
                      },
                      "functionReturnParameters": 6539,
                      "id": 6555,
                      "nodeType": "Return",
                      "src": "2804:66:15"
                    }
                  ]
                },
                "documentation": null,
                "id": 6557,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6536,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6535,
                      "mutability": "mutable",
                      "name": "self",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6557,
                      "src": "2729:21:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6534,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "2729:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2728:23:15"
                },
                "returnParameters": {
                  "id": 6539,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6538,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6557,
                      "src": "2775:16:15",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_struct$_uq112x112_$6323_memory_ptr",
                        "typeString": "struct FixedPoint.uq112x112"
                      },
                      "typeName": {
                        "contractScope": null,
                        "id": 6537,
                        "name": "uq112x112",
                        "nodeType": "UserDefinedTypeName",
                        "referencedDeclaration": 6323,
                        "src": "2775:9:15",
                        "typeDescriptions": {
                          "typeIdentifier": "t_struct$_uq112x112_$6323_storage_ptr",
                          "typeString": "struct FixedPoint.uq112x112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2774:18:15"
                },
                "scope": 6558,
                "src": "2715:163:15",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 6559,
            "src": "199:2682:15"
          }
        ],
        "src": "37:2846:15"
      }
    },
    "contracts/libraries/Math.sol": {
      "id": 16,
      "AST": {
        "absolutePath": "contracts/libraries/Math.sol",
        "exportedSymbols": {
          "Math": [
            6634
          ]
        },
        "id": 6635,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6560,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:16"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6634,
            "linearizedBaseContracts": [
              6634
            ],
            "name": "Math",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 6578,
                  "nodeType": "Block",
                  "src": "200:36:16",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6569,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6567,
                          "src": "211:1:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6572,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6570,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6562,
                              "src": "215:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6571,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6564,
                              "src": "219:1:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "215:5:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 6574,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6564,
                            "src": "227:1:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 6575,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "215:13:16",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 6573,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6562,
                            "src": "223:1:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "211:17:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 6577,
                      "nodeType": "ExpressionStatement",
                      "src": "211:17:16"
                    }
                  ]
                },
                "documentation": null,
                "id": 6579,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "min",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6565,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6562,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6579,
                      "src": "153:6:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6561,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "153:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6564,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6579,
                      "src": "161:6:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6563,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "161:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "152:16:16"
                },
                "returnParameters": {
                  "id": 6568,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6567,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6579,
                      "src": "192:6:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6566,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "192:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "191:8:16"
                },
                "scope": 6634,
                "src": "140:96:16",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6632,
                  "nodeType": "Block",
                  "src": "407:250:16",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 6588,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 6586,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6581,
                          "src": "422:1:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 6587,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "426:1:16",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "src": "422:5:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 6624,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6622,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6581,
                            "src": "610:1:16",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 6623,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "615:1:16",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "610:6:16",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 6630,
                        "nodeType": "IfStatement",
                        "src": "606:44:16",
                        "trueBody": {
                          "id": 6629,
                          "nodeType": "Block",
                          "src": "618:32:16",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 6627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 6625,
                                  "name": "z",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6584,
                                  "src": "633:1:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 6626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "637:1:16",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "633:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 6628,
                              "nodeType": "ExpressionStatement",
                              "src": "633:5:16"
                            }
                          ]
                        }
                      },
                      "id": 6631,
                      "nodeType": "IfStatement",
                      "src": "418:232:16",
                      "trueBody": {
                        "id": 6621,
                        "nodeType": "Block",
                        "src": "429:171:16",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 6591,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 6589,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6584,
                                "src": "444:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 6590,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6581,
                                "src": "448:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "444:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 6592,
                            "nodeType": "ExpressionStatement",
                            "src": "444:5:16"
                          },
                          {
                            "assignments": [
                              6594
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 6594,
                                "mutability": "mutable",
                                "name": "x",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 6621,
                                "src": "464:6:16",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 6593,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "464:4:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 6600,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6597,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 6595,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6581,
                                  "src": "473:1:16",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 6596,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "477:1:16",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "473:5:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 6598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "481:1:16",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "473:9:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "464:18:16"
                          },
                          {
                            "body": {
                              "id": 6619,
                              "nodeType": "Block",
                              "src": "511:78:16",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6606,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 6604,
                                      "name": "z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6584,
                                      "src": "530:1:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 6605,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6594,
                                      "src": "534:1:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "530:5:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6607,
                                  "nodeType": "ExpressionStatement",
                                  "src": "530:5:16"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 6617,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 6608,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6594,
                                      "src": "554:1:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 6616,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 6613,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 6611,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 6609,
                                                "name": "y",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6581,
                                                "src": "559:1:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "id": 6610,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 6594,
                                                "src": "563:1:16",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "559:5:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 6612,
                                              "name": "x",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 6594,
                                              "src": "567:1:16",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "559:9:16",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 6614,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "558:11:16",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 6615,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "572:1:16",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "558:15:16",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "554:19:16",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 6618,
                                  "nodeType": "ExpressionStatement",
                                  "src": "554:19:16"
                                }
                              ]
                            },
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6603,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6601,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6594,
                                "src": "504:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 6602,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6584,
                                "src": "508:1:16",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "504:5:16",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 6620,
                            "nodeType": "WhileStatement",
                            "src": "497:92:16"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 6633,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6582,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6581,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6633,
                      "src": "368:6:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6580,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "368:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "367:8:16"
                },
                "returnParameters": {
                  "id": 6585,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6584,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6633,
                      "src": "399:6:16",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6583,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "399:4:16",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "398:8:16"
                },
                "scope": 6634,
                "src": "354:303:16",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 6635,
            "src": "120:540:16"
          }
        ],
        "src": "37:625:16"
      }
    },
    "contracts/libraries/SafeMath.sol": {
      "id": 17,
      "AST": {
        "absolutePath": "contracts/libraries/SafeMath.sol",
        "exportedSymbols": {
          "SafeMath": [
            6709
          ]
        },
        "id": 6710,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6636,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:17"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6709,
            "linearizedBaseContracts": [
              6709
            ],
            "name": "SafeMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 6657,
                  "nodeType": "Block",
                  "src": "257:68:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6653,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 6650,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 6646,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6643,
                                    "src": "277:1:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6649,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 6647,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6638,
                                      "src": "281:1:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 6648,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6640,
                                      "src": "285:1:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "281:5:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "277:9:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 6651,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "276:11:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6652,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6638,
                              "src": "291:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "276:16:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d6164642d6f766572666c6f77",
                            "id": 6654,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "294:22:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            },
                            "value": "ds-math-add-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            }
                          ],
                          "id": 6645,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "268:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6655,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "268:49:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6656,
                      "nodeType": "ExpressionStatement",
                      "src": "268:49:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 6658,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6641,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6638,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6658,
                      "src": "210:6:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6637,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "210:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6640,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6658,
                      "src": "218:6:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6639,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "218:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "209:16:17"
                },
                "returnParameters": {
                  "id": 6644,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6643,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6658,
                      "src": "249:6:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6642,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "249:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "248:8:17"
                },
                "scope": 6709,
                "src": "197:128:17",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6679,
                  "nodeType": "Block",
                  "src": "393:69:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6675,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 6672,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 6668,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6665,
                                    "src": "413:1:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6671,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 6669,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6660,
                                      "src": "417:1:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 6670,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6662,
                                      "src": "421:1:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "417:5:17",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "413:9:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 6673,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "412:11:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6674,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6660,
                              "src": "427:1:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "412:16:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d7375622d756e646572666c6f77",
                            "id": 6676,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "430:23:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            },
                            "value": "ds-math-sub-underflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            }
                          ],
                          "id": 6667,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "404:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "404:50:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6678,
                      "nodeType": "ExpressionStatement",
                      "src": "404:50:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 6680,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6663,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6660,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6680,
                      "src": "346:6:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6659,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "346:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6662,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6680,
                      "src": "354:6:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6661,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "354:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "345:16:17"
                },
                "returnParameters": {
                  "id": 6666,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6665,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6680,
                      "src": "385:6:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6664,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "385:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "384:8:17"
                },
                "scope": 6709,
                "src": "333:129:17",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6707,
                  "nodeType": "Block",
                  "src": "530:82:17",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6703,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6692,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6690,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6684,
                                "src": "549:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6691,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "554:1:17",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "549:6:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6702,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6700,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 6693,
                                        "name": "z",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6687,
                                        "src": "560:1:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6696,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 6694,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6682,
                                          "src": "564:1:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 6695,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6684,
                                          "src": "568:1:17",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "564:5:17",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "560:9:17",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6698,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "559:11:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6699,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6684,
                                  "src": "573:1:17",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "559:15:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 6701,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6682,
                                "src": "578:1:17",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "559:20:17",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "549:30:17",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77",
                            "id": 6704,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "581:22:17",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            },
                            "value": "ds-math-mul-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            }
                          ],
                          "id": 6689,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "541:7:17",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6705,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "541:63:17",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6706,
                      "nodeType": "ExpressionStatement",
                      "src": "541:63:17"
                    }
                  ]
                },
                "documentation": null,
                "id": 6708,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6685,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6682,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6708,
                      "src": "483:6:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6681,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "483:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6684,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6708,
                      "src": "491:6:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6683,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "491:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "482:16:17"
                },
                "returnParameters": {
                  "id": 6688,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6687,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6708,
                      "src": "522:6:17",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6686,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "522:4:17",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "521:8:17"
                },
                "scope": 6709,
                "src": "470:142:17",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 6710,
            "src": "173:442:17"
          }
        ],
        "src": "37:580:17"
      }
    },
    "contracts/libraries/TransferHelper.sol": {
      "id": 18,
      "AST": {
        "absolutePath": "contracts/libraries/TransferHelper.sol",
        "exportedSymbols": {
          "TransferHelper": [
            6869
          ]
        },
        "id": 6870,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6711,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:18"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6869,
            "linearizedBaseContracts": [
              6869
            ],
            "name": "TransferHelper",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 6753,
                  "nodeType": "Block",
                  "src": "278:289:18",
                  "statements": [
                    {
                      "assignments": [
                        6721,
                        6723
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6721,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6753,
                          "src": "356:12:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 6720,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "356:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 6723,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6753,
                          "src": "370:17:18",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 6722,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "370:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6733,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30783039356561376233",
                                "id": 6728,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "425:10:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_157198259_by_1",
                                  "typeString": "int_const 157198259"
                                },
                                "value": "0x095ea7b3"
                              },
                              {
                                "argumentTypes": null,
                                "id": 6729,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6715,
                                "src": "437:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6730,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6717,
                                "src": "441:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_157198259_by_1",
                                  "typeString": "int_const 157198259"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6726,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "402:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 6727,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "402:22:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 6731,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "402:45:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6724,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6713,
                            "src": "391:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6725,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "391:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 6732,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "391:57:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "355:93:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6749,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6735,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6721,
                              "src": "467:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 6747,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6739,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6736,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6723,
                                        "src": "479:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 6737,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "479:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 6738,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "494:1:18",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "479:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 6742,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6723,
                                        "src": "510:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 6744,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "517:4:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 6743,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "517:4:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 6745,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "516:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6740,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "499:3:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 6741,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "499:10:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 6746,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "499:24:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "479:44:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 6748,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "478:46:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "467:57:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a20415050524f56455f4641494c4544",
                            "id": 6750,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "526:32:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00",
                              "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\""
                            },
                            "value": "TransferHelper: APPROVE_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3e27be550bb5367a6d8a8b2dd8b5c52ee0710d2d5b26de50062207957ab5bd00",
                              "typeString": "literal_string \"TransferHelper: APPROVE_FAILED\""
                            }
                          ],
                          "id": 6734,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "459:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6751,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "459:100:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6752,
                      "nodeType": "ExpressionStatement",
                      "src": "459:100:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 6754,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeApprove",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6718,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6713,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6754,
                      "src": "230:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6712,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "230:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6715,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6754,
                      "src": "245:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6714,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "245:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6717,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6754,
                      "src": "257:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6716,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "257:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "229:39:18"
                },
                "returnParameters": {
                  "id": 6719,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "278:0:18"
                },
                "scope": 6869,
                "src": "209:358:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6796,
                  "nodeType": "Block",
                  "src": "645:291:18",
                  "statements": [
                    {
                      "assignments": [
                        6764,
                        6766
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6764,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6796,
                          "src": "724:12:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 6763,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "724:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 6766,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6796,
                          "src": "738:17:18",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 6765,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "738:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6776,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30786139303539636262",
                                "id": 6771,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "793:10:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_2835717307_by_1",
                                  "typeString": "int_const 2835717307"
                                },
                                "value": "0xa9059cbb"
                              },
                              {
                                "argumentTypes": null,
                                "id": 6772,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6758,
                                "src": "805:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6773,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6760,
                                "src": "809:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_2835717307_by_1",
                                  "typeString": "int_const 2835717307"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6769,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "770:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 6770,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "770:22:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 6774,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "770:45:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6767,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6756,
                            "src": "759:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6768,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "759:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 6775,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "759:57:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "723:93:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6792,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6778,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6764,
                              "src": "835:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 6790,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6782,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6779,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6766,
                                        "src": "847:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 6780,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "847:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 6781,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "862:1:18",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "847:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 6785,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6766,
                                        "src": "878:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 6787,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "885:4:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 6786,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "885:4:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 6788,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "884:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6783,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "867:3:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 6784,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "867:10:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 6789,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "867:24:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "847:44:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 6791,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "846:46:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "835:57:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a205452414e534645525f4641494c4544",
                            "id": 6793,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "894:33:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426",
                              "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\""
                            },
                            "value": "TransferHelper: TRANSFER_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_05d7eee434319ef96b9de8eaf182057f1e6a6441451c0ddc676469e4b256f426",
                              "typeString": "literal_string \"TransferHelper: TRANSFER_FAILED\""
                            }
                          ],
                          "id": 6777,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "827:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "827:101:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6795,
                      "nodeType": "ExpressionStatement",
                      "src": "827:101:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 6797,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6761,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6756,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6797,
                      "src": "597:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6755,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "597:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6758,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6797,
                      "src": "612:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6757,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "612:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6760,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6797,
                      "src": "624:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6759,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "624:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "596:39:18"
                },
                "returnParameters": {
                  "id": 6762,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "645:0:18"
                },
                "scope": 6869,
                "src": "575:361:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6842,
                  "nodeType": "Block",
                  "src": "1032:314:18",
                  "statements": [
                    {
                      "assignments": [
                        6809,
                        6811
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6809,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6842,
                          "src": "1123:12:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 6808,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1123:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 6811,
                          "mutability": "mutable",
                          "name": "data",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6842,
                          "src": "1137:17:18",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 6810,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1137:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 6822,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30783233623837326464",
                                "id": 6816,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1192:10:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_599290589_by_1",
                                  "typeString": "int_const 599290589"
                                },
                                "value": "0x23b872dd"
                              },
                              {
                                "argumentTypes": null,
                                "id": 6817,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6801,
                                "src": "1204:4:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6818,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6803,
                                "src": "1210:2:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 6819,
                                "name": "value",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6805,
                                "src": "1214:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_599290589_by_1",
                                  "typeString": "int_const 599290589"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 6814,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1169:3:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 6815,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1169:22:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 6820,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1169:51:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 6812,
                            "name": "token",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6799,
                            "src": "1158:5:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 6813,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "call",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1158:10:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 6821,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1158:63:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1122:99:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6838,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 6824,
                              "name": "success",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6809,
                              "src": "1240:7:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  "id": 6836,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6828,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6825,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6811,
                                        "src": "1252:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      "id": 6826,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "length",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1252:11:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "==",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "30",
                                      "id": 6827,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1267:1:18",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_0_by_1",
                                        "typeString": "int_const 0"
                                      },
                                      "value": "0"
                                    },
                                    "src": "1252:16:18",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": "||",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 6831,
                                        "name": "data",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6811,
                                        "src": "1283:4:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "id": 6833,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": true,
                                            "lValueRequested": false,
                                            "nodeType": "ElementaryTypeNameExpression",
                                            "src": "1290:4:18",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_type$_t_bool_$",
                                              "typeString": "type(bool)"
                                            },
                                            "typeName": {
                                              "id": 6832,
                                              "name": "bool",
                                              "nodeType": "ElementaryTypeName",
                                              "src": "1290:4:18",
                                              "typeDescriptions": {
                                                "typeIdentifier": null,
                                                "typeString": null
                                              }
                                            }
                                          }
                                        ],
                                        "id": 6834,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "1289:6:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes_memory_ptr",
                                          "typeString": "bytes memory"
                                        },
                                        {
                                          "typeIdentifier": "t_type$_t_bool_$",
                                          "typeString": "type(bool)"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 6829,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "1272:3:18",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 6830,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "decode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1272:10:18",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                        "typeString": "function () pure"
                                      }
                                    },
                                    "id": 6835,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1272:24:18",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bool",
                                      "typeString": "bool"
                                    }
                                  },
                                  "src": "1252:44:18",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                }
                              ],
                              "id": 6837,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "1251:46:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "1240:57:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a205452414e534645525f46524f4d5f4641494c4544",
                            "id": 6839,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1299:38:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18",
                              "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\""
                            },
                            "value": "TransferHelper: TRANSFER_FROM_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_eb2904bf3c0c9ae693b53eb0188a703c388998a9c405b7965ca678cef9a51d18",
                              "typeString": "literal_string \"TransferHelper: TRANSFER_FROM_FAILED\""
                            }
                          ],
                          "id": 6823,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1232:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6840,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1232:106:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6841,
                      "nodeType": "ExpressionStatement",
                      "src": "1232:106:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 6843,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6806,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6799,
                      "mutability": "mutable",
                      "name": "token",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6843,
                      "src": "970:13:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6798,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "970:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6801,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6843,
                      "src": "985:12:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6800,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "985:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6803,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6843,
                      "src": "999:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6802,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "999:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6805,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6843,
                      "src": "1011:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6804,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1011:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "969:53:18"
                },
                "returnParameters": {
                  "id": 6807,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1032:0:18"
                },
                "scope": 6869,
                "src": "944:402:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6867,
                  "nodeType": "Block",
                  "src": "1412:137:18",
                  "statements": [
                    {
                      "assignments": [
                        6851,
                        null
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 6851,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 6867,
                          "src": "1424:12:18",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 6850,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1424:4:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        null
                      ],
                      "id": 6861,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6858,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1472:1:18",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 6857,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "1462:9:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_objectcreation_pure$_t_uint256_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (uint256) pure returns (bytes memory)"
                              },
                              "typeName": {
                                "id": 6856,
                                "name": "bytes",
                                "nodeType": "ElementaryTypeName",
                                "src": "1466:5:18",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_storage_ptr",
                                  "typeString": "bytes"
                                }
                              }
                            },
                            "id": 6859,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1462:12:18",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 6852,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6845,
                              "src": "1441:2:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "id": 6853,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "call",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1441:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                            }
                          },
                          "id": 6855,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "names": [
                            "value"
                          ],
                          "nodeType": "FunctionCallOptions",
                          "options": [
                            {
                              "argumentTypes": null,
                              "id": 6854,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6847,
                              "src": "1455:5:18",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "src": "1441:20:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_barecall_payable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$value",
                            "typeString": "function (bytes memory) payable returns (bool,bytes memory)"
                          }
                        },
                        "id": 6860,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1441:34:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1423:52:18"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 6863,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6851,
                            "src": "1494:7:18",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "5472616e7366657248656c7065723a204554485f5452414e534645525f4641494c4544",
                            "id": 6864,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1503:37:18",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_d290720a9b119bbeaf8124eb771e119cbea85a2f430cbb39a8fead2398528881",
                              "typeString": "literal_string \"TransferHelper: ETH_TRANSFER_FAILED\""
                            },
                            "value": "TransferHelper: ETH_TRANSFER_FAILED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_d290720a9b119bbeaf8124eb771e119cbea85a2f430cbb39a8fead2398528881",
                              "typeString": "literal_string \"TransferHelper: ETH_TRANSFER_FAILED\""
                            }
                          ],
                          "id": 6862,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1486:7:18",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6865,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1486:55:18",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6866,
                      "nodeType": "ExpressionStatement",
                      "src": "1486:55:18"
                    }
                  ]
                },
                "documentation": null,
                "id": 6868,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "safeTransferETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6848,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6845,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6868,
                      "src": "1379:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 6844,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1379:7:18",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6847,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6868,
                      "src": "1391:10:18",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6846,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1391:4:18",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1378:24:18"
                },
                "returnParameters": {
                  "id": 6849,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1412:0:18"
                },
                "scope": 6869,
                "src": "1354:195:18",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 6870,
            "src": "179:1373:18"
          }
        ],
        "src": "37:1517:18"
      }
    },
    "contracts/libraries/UQ112x112.sol": {
      "id": 19,
      "AST": {
        "absolutePath": "contracts/libraries/UQ112x112.sol",
        "exportedSymbols": {
          "UQ112x112": [
            6913
          ]
        },
        "id": 6914,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6871,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:19"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6913,
            "linearizedBaseContracts": [
              6913
            ],
            "name": "UQ112x112",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": true,
                "id": 6876,
                "mutability": "constant",
                "name": "Q112",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 6913,
                "src": "252:30:19",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint224",
                  "typeString": "uint224"
                },
                "typeName": {
                  "id": 6872,
                  "name": "uint224",
                  "nodeType": "ElementaryTypeName",
                  "src": "252:7:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint224",
                    "typeString": "uint224"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "commonType": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                  },
                  "id": 6875,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "lValueRequested": false,
                  "leftExpression": {
                    "argumentTypes": null,
                    "hexValue": "32",
                    "id": 6873,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "276:1:19",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_2_by_1",
                      "typeString": "int_const 2"
                    },
                    "value": "2"
                  },
                  "nodeType": "BinaryOperation",
                  "operator": "**",
                  "rightExpression": {
                    "argumentTypes": null,
                    "hexValue": "313132",
                    "id": 6874,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "279:3:19",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_112_by_1",
                      "typeString": "int_const 112"
                    },
                    "value": "112"
                  },
                  "src": "276:6:19",
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_5192296858534827628530496329220096_by_1",
                    "typeString": "int_const 5192...(26 digits omitted)...0096"
                  }
                },
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6892,
                  "nodeType": "Block",
                  "src": "392:59:19",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6890,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6883,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6881,
                          "src": "403:1:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 6889,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6886,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6878,
                                "src": "415:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "id": 6885,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "407:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 6884,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "407:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6887,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "407:10:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "*",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 6888,
                            "name": "Q112",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6876,
                            "src": "420:4:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "407:17:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "403:21:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "id": 6891,
                      "nodeType": "ExpressionStatement",
                      "src": "403:21:19"
                    }
                  ]
                },
                "documentation": null,
                "id": 6893,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encode",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6879,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6878,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6893,
                      "src": "347:9:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6877,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "347:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "346:11:19"
                },
                "returnParameters": {
                  "id": 6882,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6881,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6893,
                      "src": "381:9:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "typeName": {
                        "id": 6880,
                        "name": "uint224",
                        "nodeType": "ElementaryTypeName",
                        "src": "381:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "380:11:19"
                },
                "scope": 6913,
                "src": "331:120:19",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6911,
                  "nodeType": "Block",
                  "src": "593:37:19",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 6909,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 6902,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 6900,
                          "src": "604:1:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          },
                          "id": 6908,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 6903,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 6895,
                            "src": "608:1:19",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 6906,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6897,
                                "src": "620:1:19",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint112",
                                  "typeString": "uint112"
                                }
                              ],
                              "id": 6905,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "612:7:19",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint224_$",
                                "typeString": "type(uint224)"
                              },
                              "typeName": {
                                "id": 6904,
                                "name": "uint224",
                                "nodeType": "ElementaryTypeName",
                                "src": "612:7:19",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 6907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "612:10:19",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint224",
                              "typeString": "uint224"
                            }
                          },
                          "src": "608:14:19",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint224",
                            "typeString": "uint224"
                          }
                        },
                        "src": "604:18:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "id": 6910,
                      "nodeType": "ExpressionStatement",
                      "src": "604:18:19"
                    }
                  ]
                },
                "documentation": null,
                "id": 6912,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "uqdiv",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6898,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6895,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6912,
                      "src": "537:9:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "typeName": {
                        "id": 6894,
                        "name": "uint224",
                        "nodeType": "ElementaryTypeName",
                        "src": "537:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6897,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6912,
                      "src": "548:9:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint112",
                        "typeString": "uint112"
                      },
                      "typeName": {
                        "id": 6896,
                        "name": "uint112",
                        "nodeType": "ElementaryTypeName",
                        "src": "548:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint112",
                          "typeString": "uint112"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "536:22:19"
                },
                "returnParameters": {
                  "id": 6901,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6900,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6912,
                      "src": "582:9:19",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint224",
                        "typeString": "uint224"
                      },
                      "typeName": {
                        "id": 6899,
                        "name": "uint224",
                        "nodeType": "ElementaryTypeName",
                        "src": "582:7:19",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint224",
                          "typeString": "uint224"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "581:11:19"
                },
                "scope": 6913,
                "src": "522:108:19",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 6914,
            "src": "227:406:19"
          }
        ],
        "src": "37:598:19"
      }
    },
    "contracts/simu/FeSwapSimu.sol": {
      "id": 20,
      "AST": {
        "absolutePath": "contracts/simu/FeSwapSimu.sol",
        "exportedSymbols": {
          "FeSwapSimu": [
            8631
          ],
          "SafeMath": [
            6988
          ]
        },
        "id": 8632,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 6915,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:20"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "library",
            "documentation": null,
            "fullyImplemented": true,
            "id": 6988,
            "linearizedBaseContracts": [
              6988
            ],
            "name": "SafeMath",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "body": {
                  "id": 6936,
                  "nodeType": "Block",
                  "src": "149:68:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6932,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 6929,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 6925,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6922,
                                    "src": "169:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6928,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 6926,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6917,
                                      "src": "173:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "+",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 6927,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6919,
                                      "src": "177:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "173:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "169:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 6930,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "168:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6931,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6917,
                              "src": "183:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "168:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d6164642d6f766572666c6f77",
                            "id": 6933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "186:22:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            },
                            "value": "ds-math-add-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_3903056b84ed2aba2be78662dc6c5c99b160cebe9af9bd9493d0fc28ff16f6db",
                              "typeString": "literal_string \"ds-math-add-overflow\""
                            }
                          ],
                          "id": 6924,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "160:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6934,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "160:49:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6935,
                      "nodeType": "ExpressionStatement",
                      "src": "160:49:20"
                    }
                  ]
                },
                "documentation": null,
                "id": 6937,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "add",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6920,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6917,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6937,
                      "src": "102:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6916,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "102:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6919,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6937,
                      "src": "110:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6918,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "110:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "101:16:20"
                },
                "returnParameters": {
                  "id": 6923,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6922,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6937,
                      "src": "141:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6921,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "141:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "140:8:20"
                },
                "scope": 6988,
                "src": "89:128:20",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6958,
                  "nodeType": "Block",
                  "src": "285:69:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 6954,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "components": [
                                {
                                  "argumentTypes": null,
                                  "id": 6951,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftHandSide": {
                                    "argumentTypes": null,
                                    "id": 6947,
                                    "name": "z",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 6944,
                                    "src": "305:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "Assignment",
                                  "operator": "=",
                                  "rightHandSide": {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 6950,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 6948,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6939,
                                      "src": "309:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 6949,
                                      "name": "y",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 6941,
                                      "src": "313:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "309:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "305:9:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "id": 6952,
                              "isConstant": false,
                              "isInlineArray": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "TupleExpression",
                              "src": "304:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 6953,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 6939,
                              "src": "319:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "304:16:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d7375622d756e646572666c6f77",
                            "id": 6955,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "322:23:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            },
                            "value": "ds-math-sub-underflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_03b20b9f6e6e7905f077509fd420fb44afc685f254bcefe49147296e1ba25590",
                              "typeString": "literal_string \"ds-math-sub-underflow\""
                            }
                          ],
                          "id": 6946,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "296:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6956,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "296:50:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6957,
                      "nodeType": "ExpressionStatement",
                      "src": "296:50:20"
                    }
                  ]
                },
                "documentation": null,
                "id": 6959,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sub",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6942,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6939,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6959,
                      "src": "238:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6938,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "238:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6941,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6959,
                      "src": "246:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6940,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "246:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "237:16:20"
                },
                "returnParameters": {
                  "id": 6945,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6944,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6959,
                      "src": "277:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6943,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "277:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "276:8:20"
                },
                "scope": 6988,
                "src": "225:129:20",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 6986,
                  "nodeType": "Block",
                  "src": "422:82:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 6982,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6971,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 6969,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6963,
                                "src": "441:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 6970,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "446:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "441:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "||",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 6981,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 6979,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "id": 6976,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftHandSide": {
                                        "argumentTypes": null,
                                        "id": 6972,
                                        "name": "z",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 6966,
                                        "src": "452:1:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "Assignment",
                                      "operator": "=",
                                      "rightHandSide": {
                                        "argumentTypes": null,
                                        "commonType": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        "id": 6975,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "leftExpression": {
                                          "argumentTypes": null,
                                          "id": 6973,
                                          "name": "x",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6961,
                                          "src": "456:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "nodeType": "BinaryOperation",
                                        "operator": "*",
                                        "rightExpression": {
                                          "argumentTypes": null,
                                          "id": 6974,
                                          "name": "y",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 6963,
                                          "src": "460:1:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "src": "456:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "452:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 6977,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "451:11:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 6978,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 6963,
                                  "src": "465:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "451:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 6980,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 6961,
                                "src": "470:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "451:20:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "441:30:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "64732d6d6174682d6d756c2d6f766572666c6f77",
                            "id": 6983,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "473:22:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            },
                            "value": "ds-math-mul-overflow"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_25a0ef6406c6af6852555433653ce478274cd9f03a5dec44d001868a76b3bfdd",
                              "typeString": "literal_string \"ds-math-mul-overflow\""
                            }
                          ],
                          "id": 6968,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "433:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 6984,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "433:63:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 6985,
                      "nodeType": "ExpressionStatement",
                      "src": "433:63:20"
                    }
                  ]
                },
                "documentation": null,
                "id": 6987,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mul",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 6964,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6961,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6987,
                      "src": "375:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6960,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "375:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 6963,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6987,
                      "src": "383:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6962,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "383:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "374:16:20"
                },
                "returnParameters": {
                  "id": 6967,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 6966,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 6987,
                      "src": "414:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 6965,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "414:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "413:8:20"
                },
                "scope": 6988,
                "src": "362:142:20",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 8632,
            "src": "65:442:20"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 8631,
            "linearizedBaseContracts": [
              8631
            ],
            "name": "FeSwapSimu",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 6991,
                "libraryName": {
                  "contractScope": null,
                  "id": 6989,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6988,
                  "src": "544:8:20",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$6988",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "538:25:20",
                "typeName": {
                  "id": 6990,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "558:4:20",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "canonicalName": "FeSwapSimu.PoolUni",
                "id": 7002,
                "members": [
                  {
                    "constant": false,
                    "id": 6993,
                    "mutability": "mutable",
                    "name": "AmountA",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7002,
                    "src": "601:12:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6992,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "601:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 6995,
                    "mutability": "mutable",
                    "name": "AmountB",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7002,
                    "src": "624:12:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6994,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "624:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 6997,
                    "mutability": "mutable",
                    "name": "Liquity",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7002,
                    "src": "647:12:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6996,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "647:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 6999,
                    "mutability": "mutable",
                    "name": "KLast",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7002,
                    "src": "678:10:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 6998,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "678:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7001,
                    "mutability": "mutable",
                    "name": "feeUniPool",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7002,
                    "src": "699:15:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7000,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "699:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "PoolUni",
                "nodeType": "StructDefinition",
                "scope": 8631,
                "src": "575:147:20",
                "visibility": "public"
              },
              {
                "canonicalName": "FeSwapSimu.Pool",
                "id": 7029,
                "members": [
                  {
                    "constant": false,
                    "id": 7004,
                    "mutability": "mutable",
                    "name": "AmountAA",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "761:13:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7003,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "761:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7006,
                    "mutability": "mutable",
                    "name": "AmountB",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "785:12:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7005,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "785:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7008,
                    "mutability": "mutable",
                    "name": "AmountA",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "808:12:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7007,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "808:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7010,
                    "mutability": "mutable",
                    "name": "AmountBB",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "831:13:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7009,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "831:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7012,
                    "mutability": "mutable",
                    "name": "LiquityAB",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "867:14:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7011,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "867:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7014,
                    "mutability": "mutable",
                    "name": "LiquityBA",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "900:14:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7013,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "900:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7016,
                    "mutability": "mutable",
                    "name": "KLastAB",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "935:12:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7015,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "935:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7018,
                    "mutability": "mutable",
                    "name": "KLastBA",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "958:12:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7017,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "958:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7020,
                    "mutability": "mutable",
                    "name": "feeLiquidityPoolAB",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "991:23:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7019,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "991:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7022,
                    "mutability": "mutable",
                    "name": "feeLiquidityCreatorAB",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "1025:26:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7021,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1025:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7024,
                    "mutability": "mutable",
                    "name": "feeLiquidityPoolBA",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "1072:23:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7023,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1072:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7026,
                    "mutability": "mutable",
                    "name": "feeLiquidityCreatorBA",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "1106:26:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7025,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1106:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7028,
                    "mutability": "mutable",
                    "name": "arbitrageTime",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7029,
                    "src": "1145:18:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7027,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1145:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "Pool",
                "nodeType": "StructDefinition",
                "scope": 8631,
                "src": "738:441:20",
                "visibility": "public"
              },
              {
                "canonicalName": "FeSwapSimu.User",
                "id": 7040,
                "members": [
                  {
                    "constant": false,
                    "id": 7031,
                    "mutability": "mutable",
                    "name": "amountA",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7040,
                    "src": "1210:12:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7030,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1210:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7033,
                    "mutability": "mutable",
                    "name": "amountB",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7040,
                    "src": "1233:12:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7032,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1233:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7035,
                    "mutability": "mutable",
                    "name": "liquityAB",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7040,
                    "src": "1256:14:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7034,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1256:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7037,
                    "mutability": "mutable",
                    "name": "liquityBA",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7040,
                    "src": "1281:14:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7036,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1281:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  },
                  {
                    "constant": false,
                    "id": 7039,
                    "mutability": "mutable",
                    "name": "liquityUni",
                    "nodeType": "VariableDeclaration",
                    "overrides": null,
                    "scope": 7040,
                    "src": "1306:15:20",
                    "stateVariable": false,
                    "storageLocation": "default",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    },
                    "typeName": {
                      "id": 7038,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "1306:4:20",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    },
                    "value": null,
                    "visibility": "internal"
                  }
                ],
                "name": "User",
                "nodeType": "StructDefinition",
                "scope": 8631,
                "src": "1187:150:20",
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "365b98b2",
                "id": 7044,
                "mutability": "mutable",
                "name": "users",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8631,
                "src": "1351:21:20",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                  "typeString": "struct FeSwapSimu.User[25]"
                },
                "typeName": {
                  "baseType": {
                    "contractScope": null,
                    "id": 7041,
                    "name": "User",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 7040,
                    "src": "1351:4:20",
                    "typeDescriptions": {
                      "typeIdentifier": "t_struct$_User_$7040_storage_ptr",
                      "typeString": "struct FeSwapSimu.User"
                    }
                  },
                  "id": 7043,
                  "length": {
                    "argumentTypes": null,
                    "hexValue": "3235",
                    "id": 7042,
                    "isConstant": false,
                    "isLValue": false,
                    "isPure": true,
                    "kind": "number",
                    "lValueRequested": false,
                    "nodeType": "Literal",
                    "src": "1356:2:20",
                    "subdenomination": null,
                    "typeDescriptions": {
                      "typeIdentifier": "t_rational_25_by_1",
                      "typeString": "int_const 25"
                    },
                    "value": "25"
                  },
                  "nodeType": "ArrayTypeName",
                  "src": "1351:8:20",
                  "typeDescriptions": {
                    "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage_ptr",
                    "typeString": "struct FeSwapSimu.User[25]"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "16f0115b",
                "id": 7046,
                "mutability": "mutable",
                "name": "pool",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8631,
                "src": "1379:20:20",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_Pool_$7029_storage",
                  "typeString": "struct FeSwapSimu.Pool"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 7045,
                  "name": "Pool",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7029,
                  "src": "1379:4:20",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_Pool_$7029_storage_ptr",
                    "typeString": "struct FeSwapSimu.Pool"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "fec9af02",
                "id": 7048,
                "mutability": "mutable",
                "name": "poolUni",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 8631,
                "src": "1406:23:20",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                  "typeString": "struct FeSwapSimu.PoolUni"
                },
                "typeName": {
                  "contractScope": null,
                  "id": 7047,
                  "name": "PoolUni",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 7002,
                  "src": "1406:7:20",
                  "typeDescriptions": {
                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage_ptr",
                    "typeString": "struct FeSwapSimu.PoolUni"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7085,
                  "nodeType": "Block",
                  "src": "1489:465:20",
                  "statements": [
                    {
                      "body": {
                        "id": 7083,
                        "nodeType": "Block",
                        "src": "1526:126:20",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7072,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7065,
                                    "name": "users",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7044,
                                    "src": "1541:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                      "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                                    }
                                  },
                                  "id": 7067,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7066,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7056,
                                    "src": "1547:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1541:8:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$7040_storage",
                                    "typeString": "struct FeSwapSimu.User storage ref"
                                  }
                                },
                                "id": 7068,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "amountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7031,
                                "src": "1541:16:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7071,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7069,
                                  "name": "nTokenA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7050,
                                  "src": "1560:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 7070,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1570:7:20",
                                  "subdenomination": "ether",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "value": "1"
                                },
                                "src": "1560:17:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1541:36:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7073,
                            "nodeType": "ExpressionStatement",
                            "src": "1541:36:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7081,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 7074,
                                    "name": "users",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7044,
                                    "src": "1592:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                      "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                                    }
                                  },
                                  "id": 7076,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 7075,
                                    "name": "i",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7056,
                                    "src": "1598:1:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1592:8:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_User_$7040_storage",
                                    "typeString": "struct FeSwapSimu.User storage ref"
                                  }
                                },
                                "id": 7077,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "amountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7033,
                                "src": "1592:16:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7080,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7078,
                                  "name": "nTokenB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7052,
                                  "src": "1611:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 7079,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1621:7:20",
                                  "subdenomination": "ether",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000000000000000000_by_1",
                                    "typeString": "int_const 1000000000000000000"
                                  },
                                  "value": "1"
                                },
                                "src": "1611:17:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1592:36:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7082,
                            "nodeType": "ExpressionStatement",
                            "src": "1592:36:20"
                          }
                        ]
                      },
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7061,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7059,
                          "name": "i",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7056,
                          "src": "1515:1:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "<",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "3235",
                          "id": 7060,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1517:2:20",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_25_by_1",
                            "typeString": "int_const 25"
                          },
                          "value": "25"
                        },
                        "src": "1515:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "id": 7084,
                      "initializationExpression": {
                        "assignments": [
                          7056
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 7056,
                            "mutability": "mutable",
                            "name": "i",
                            "nodeType": "VariableDeclaration",
                            "overrides": null,
                            "scope": 7084,
                            "src": "1505:6:20",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 7055,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "1505:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 7058,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "30",
                          "id": 7057,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "1512:1:20",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_0_by_1",
                            "typeString": "int_const 0"
                          },
                          "value": "0"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "1505:8:20"
                      },
                      "loopExpression": {
                        "expression": {
                          "argumentTypes": null,
                          "id": 7063,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "UnaryOperation",
                          "operator": "++",
                          "prefix": false,
                          "src": "1521:3:20",
                          "subExpression": {
                            "argumentTypes": null,
                            "id": 7062,
                            "name": "i",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7056,
                            "src": "1521:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 7064,
                        "nodeType": "ExpressionStatement",
                        "src": "1521:3:20"
                      },
                      "nodeType": "ForStatement",
                      "src": "1500:152:20"
                    }
                  ]
                },
                "documentation": null,
                "id": 7086,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7053,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7050,
                      "mutability": "mutable",
                      "name": "nTokenA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7086,
                      "src": "1454:12:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7049,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1454:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7052,
                      "mutability": "mutable",
                      "name": "nTokenB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7086,
                      "src": "1468:12:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7051,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1468:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1453:28:20"
                },
                "returnParameters": {
                  "id": 7054,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1489:0:20"
                },
                "scope": 8631,
                "src": "1442:512:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7152,
                  "nodeType": "Block",
                  "src": "1991:492:20",
                  "statements": [
                    {
                      "assignments": [
                        7090
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7090,
                          "mutability": "mutable",
                          "name": "nowKVlaue",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7152,
                          "src": "2002:14:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7089,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2002:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7098,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7096,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7092,
                                "name": "poolUni",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7048,
                                "src": "2024:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                  "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                }
                              },
                              "id": 7093,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AmountA",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6993,
                              "src": "2024:15:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7094,
                                "name": "poolUni",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7048,
                                "src": "2042:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                  "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                }
                              },
                              "id": 7095,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AmountB",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6995,
                              "src": "2042:15:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2024:33:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7091,
                          "name": "sqrt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8630,
                          "src": "2019:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) pure returns (uint256)"
                          }
                        },
                        "id": 7097,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2019:39:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2002:56:20"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7102,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7099,
                          "name": "nowKVlaue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7090,
                          "src": "2074:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7100,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "2086:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 7101,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "KLast",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6999,
                          "src": "2086:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2074:25:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 7151,
                      "nodeType": "IfStatement",
                      "src": "2069:407:20",
                      "trueBody": {
                        "id": 7150,
                        "nodeType": "Block",
                        "src": "2102:374:20",
                        "statements": [
                          {
                            "assignments": [
                              7104
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7104,
                                "mutability": "mutable",
                                "name": "numerator",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7150,
                                "src": "2117:14:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7103,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2117:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7115,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7111,
                                        "name": "poolUni",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7048,
                                        "src": "2170:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                          "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                        }
                                      },
                                      "id": 7112,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "KLast",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6999,
                                      "src": "2170:13:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7109,
                                      "name": "nowKVlaue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7090,
                                      "src": "2156:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7110,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "sub",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6959,
                                    "src": "2156:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7113,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2156:28:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "components": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7105,
                                        "name": "poolUni",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7048,
                                        "src": "2135:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                          "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                        }
                                      },
                                      "id": 7106,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "Liquity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6997,
                                      "src": "2135:15:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "id": 7107,
                                  "isConstant": false,
                                  "isInlineArray": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "TupleExpression",
                                  "src": "2134:17:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7108,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6987,
                                "src": "2134:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7114,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2134:51:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2117:68:20"
                          },
                          {
                            "assignments": [
                              7117
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7117,
                                "mutability": "mutable",
                                "name": "denominator",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7150,
                                "src": "2200:16:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7116,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2200:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7126,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7123,
                                    "name": "poolUni",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7048,
                                    "src": "2240:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                      "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                    }
                                  },
                                  "id": 7124,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "KLast",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6999,
                                  "src": "2240:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "35",
                                      "id": 7120,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2233:1:20",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      },
                                      "value": "5"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_5_by_1",
                                        "typeString": "int_const 5"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7118,
                                      "name": "nowKVlaue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7090,
                                      "src": "2219:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7119,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6987,
                                    "src": "2219:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7121,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2219:16:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7122,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6937,
                                "src": "2219:20:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7125,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2219:35:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2200:54:20"
                          },
                          {
                            "assignments": [
                              7128
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7128,
                                "mutability": "mutable",
                                "name": "_feeUniPool",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7150,
                                "src": "2269:16:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7127,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2269:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7132,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7131,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7129,
                                "name": "numerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7104,
                                "src": "2288:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7130,
                                "name": "denominator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7117,
                                "src": "2300:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2288:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2269:42:20"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7133,
                                "name": "_feeUniPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7128,
                                "src": "2330:11:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7134,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2344:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2330:15:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 7149,
                            "nodeType": "IfStatement",
                            "src": "2326:138:20",
                            "trueBody": {
                              "id": 7148,
                              "nodeType": "Block",
                              "src": "2347:117:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7140,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7136,
                                        "name": "poolUni",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7048,
                                        "src": "2366:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                          "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                        }
                                      },
                                      "id": 7138,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "Liquity",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6997,
                                      "src": "2366:15:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7139,
                                      "name": "_feeUniPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7128,
                                      "src": "2385:11:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2366:30:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7141,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2366:30:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7146,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7142,
                                        "name": "poolUni",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7048,
                                        "src": "2415:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                          "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                        }
                                      },
                                      "id": 7144,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "feeUniPool",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7001,
                                      "src": "2415:18:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7145,
                                      "name": "_feeUniPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7128,
                                      "src": "2437:11:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2415:33:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7147,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2415:33:20"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "f1a7af9f",
                "id": 7153,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mineFeeUni",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7087,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1981:2:20"
                },
                "returnParameters": {
                  "id": 7088,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1991:0:20"
                },
                "scope": 8631,
                "src": "1962:521:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7253,
                  "nodeType": "Block",
                  "src": "2519:784:20",
                  "statements": [
                    {
                      "assignments": [
                        7157
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7157,
                          "mutability": "mutable",
                          "name": "nowKVlaue",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7253,
                          "src": "2530:14:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7156,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2530:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7165,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7163,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7159,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7046,
                                "src": "2552:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                  "typeString": "struct FeSwapSimu.Pool storage ref"
                                }
                              },
                              "id": 7160,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AmountAA",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7004,
                              "src": "2552:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7161,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7046,
                                "src": "2568:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                  "typeString": "struct FeSwapSimu.Pool storage ref"
                                }
                              },
                              "id": 7162,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AmountB",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7006,
                              "src": "2568:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "2552:28:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7158,
                          "name": "sqrt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8630,
                          "src": "2547:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) pure returns (uint256)"
                          }
                        },
                        "id": 7164,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2547:34:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2530:51:20"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7169,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7166,
                          "name": "nowKVlaue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7157,
                          "src": "2597:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7167,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "2609:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7168,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "KLastAB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7016,
                          "src": "2609:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2597:24:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 7252,
                      "nodeType": "IfStatement",
                      "src": "2592:704:20",
                      "trueBody": {
                        "id": 7251,
                        "nodeType": "Block",
                        "src": "2624:672:20",
                        "statements": [
                          {
                            "assignments": [
                              7171
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7171,
                                "mutability": "mutable",
                                "name": "numerator",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7251,
                                "src": "2639:14:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7170,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2639:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7185,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 7183,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "2710:1:20",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7178,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7046,
                                            "src": "2691:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                              "typeString": "struct FeSwapSimu.Pool storage ref"
                                            }
                                          },
                                          "id": 7179,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "KLastAB",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7016,
                                          "src": "2691:12:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 7176,
                                          "name": "nowKVlaue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7157,
                                          "src": "2677:9:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 7177,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6959,
                                        "src": "2677:13:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 7180,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "2677:27:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7172,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7046,
                                            "src": "2657:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                              "typeString": "struct FeSwapSimu.Pool storage ref"
                                            }
                                          },
                                          "id": 7173,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "LiquityAB",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7012,
                                          "src": "2657:14:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 7174,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "2656:16:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7175,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6987,
                                    "src": "2656:20:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7181,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2656:49:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7182,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6987,
                                "src": "2656:53:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7184,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2656:56:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2639:73:20"
                          },
                          {
                            "assignments": [
                              7187
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7187,
                                "mutability": "mutable",
                                "name": "denominator",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7251,
                                "src": "2727:16:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7186,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2727:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7196,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7193,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "2768:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7194,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "KLastAB",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7016,
                                  "src": "2768:12:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3131",
                                      "id": 7190,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "2760:2:20",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_11_by_1",
                                        "typeString": "int_const 11"
                                      },
                                      "value": "11"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_11_by_1",
                                        "typeString": "int_const 11"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7188,
                                      "name": "nowKVlaue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7157,
                                      "src": "2746:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7189,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6987,
                                    "src": "2746:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7191,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "2746:17:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7192,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6937,
                                "src": "2746:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "2746:35:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2727:54:20"
                          },
                          {
                            "assignments": [
                              7198
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7198,
                                "mutability": "mutable",
                                "name": "liquidityCreator",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7251,
                                "src": "2796:21:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7197,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "2796:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7206,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7205,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7199,
                                "name": "numerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7171,
                                "src": "2820:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 7202,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "2849:2:20",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7200,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7187,
                                        "src": "2833:11:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7201,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6987,
                                      "src": "2833:15:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7203,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2833:19:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7204,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2832:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2820:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "2796:57:20"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7209,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7207,
                                "name": "liquidityCreator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7198,
                                "src": "2872:16:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7208,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2891:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "2872:20:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 7223,
                            "nodeType": "IfStatement",
                            "src": "2868:160:20",
                            "trueBody": {
                              "id": 7222,
                              "nodeType": "Block",
                              "src": "2894:134:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7214,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7210,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7046,
                                        "src": "2913:4:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                          "typeString": "struct FeSwapSimu.Pool storage ref"
                                        }
                                      },
                                      "id": 7212,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "LiquityAB",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7012,
                                      "src": "2913:14:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7213,
                                      "name": "liquidityCreator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7198,
                                      "src": "2931:16:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2913:34:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7215,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2913:34:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7220,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7216,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7046,
                                        "src": "2966:4:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                          "typeString": "struct FeSwapSimu.Pool storage ref"
                                        }
                                      },
                                      "id": 7218,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "feeLiquidityCreatorAB",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7022,
                                      "src": "2966:26:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7219,
                                      "name": "liquidityCreator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7198,
                                      "src": "2996:16:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "2966:46:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7221,
                                  "nodeType": "ExpressionStatement",
                                  "src": "2966:46:20"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              7225
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7225,
                                "mutability": "mutable",
                                "name": "liquidityFeswaPool",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7251,
                                "src": "3043:23:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7224,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3043:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7233,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7232,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7226,
                                "name": "numerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7171,
                                "src": "3069:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "3135",
                                        "id": 7229,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3098:2:20",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_15_by_1",
                                          "typeString": "int_const 15"
                                        },
                                        "value": "15"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_15_by_1",
                                          "typeString": "int_const 15"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7227,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7187,
                                        "src": "3082:11:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7228,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6987,
                                      "src": "3082:15:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7230,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3082:19:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7231,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3081:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3069:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3043:59:20"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7236,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7234,
                                "name": "liquidityFeswaPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7225,
                                "src": "3121:18:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7235,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3142:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3121:22:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 7250,
                            "nodeType": "IfStatement",
                            "src": "3117:163:20",
                            "trueBody": {
                              "id": 7249,
                              "nodeType": "Block",
                              "src": "3145:135:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7241,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7237,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7046,
                                        "src": "3164:4:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                          "typeString": "struct FeSwapSimu.Pool storage ref"
                                        }
                                      },
                                      "id": 7239,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "LiquityAB",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7012,
                                      "src": "3164:14:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7240,
                                      "name": "liquidityFeswaPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7225,
                                      "src": "3182:18:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3164:36:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7242,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3164:36:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7247,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7243,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7046,
                                        "src": "3219:4:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                          "typeString": "struct FeSwapSimu.Pool storage ref"
                                        }
                                      },
                                      "id": 7245,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "feeLiquidityPoolAB",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7020,
                                      "src": "3219:23:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7246,
                                      "name": "liquidityFeswaPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7225,
                                      "src": "3246:18:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3219:45:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7248,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3219:45:20"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a5267dc6",
                "id": 7254,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mineFeeAB",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7154,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2509:2:20"
                },
                "returnParameters": {
                  "id": 7155,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2519:0:20"
                },
                "scope": 8631,
                "src": "2491:812:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7354,
                  "nodeType": "Block",
                  "src": "3343:784:20",
                  "statements": [
                    {
                      "assignments": [
                        7258
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 7258,
                          "mutability": "mutable",
                          "name": "nowKVlaue",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 7354,
                          "src": "3354:14:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 7257,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "3354:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 7266,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7264,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7260,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7046,
                                "src": "3376:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                  "typeString": "struct FeSwapSimu.Pool storage ref"
                                }
                              },
                              "id": 7261,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AmountA",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7008,
                              "src": "3376:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 7262,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7046,
                                "src": "3391:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                  "typeString": "struct FeSwapSimu.Pool storage ref"
                                }
                              },
                              "id": 7263,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AmountBB",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7010,
                              "src": "3391:13:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3376:28:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 7259,
                          "name": "sqrt",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8630,
                          "src": "3371:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                            "typeString": "function (uint256) pure returns (uint256)"
                          }
                        },
                        "id": 7265,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3371:34:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3354:51:20"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 7270,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 7267,
                          "name": "nowKVlaue",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7258,
                          "src": "3421:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7268,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "3433:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7269,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "KLastBA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7018,
                          "src": "3433:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "3421:24:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 7353,
                      "nodeType": "IfStatement",
                      "src": "3416:704:20",
                      "trueBody": {
                        "id": 7352,
                        "nodeType": "Block",
                        "src": "3448:672:20",
                        "statements": [
                          {
                            "assignments": [
                              7272
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7272,
                                "mutability": "mutable",
                                "name": "numerator",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7352,
                                "src": "3463:14:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7271,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3463:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7286,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "36",
                                  "id": 7284,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "3534:1:20",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  },
                                  "value": "6"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_6_by_1",
                                    "typeString": "int_const 6"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7279,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7046,
                                            "src": "3515:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                              "typeString": "struct FeSwapSimu.Pool storage ref"
                                            }
                                          },
                                          "id": 7280,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "KLastBA",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7018,
                                          "src": "3515:12:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        ],
                                        "expression": {
                                          "argumentTypes": null,
                                          "id": 7277,
                                          "name": "nowKVlaue",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 7258,
                                          "src": "3501:9:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "id": 7278,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "memberName": "sub",
                                        "nodeType": "MemberAccess",
                                        "referencedDeclaration": 6959,
                                        "src": "3501:13:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                          "typeString": "function (uint256,uint256) pure returns (uint256)"
                                        }
                                      },
                                      "id": 7281,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "kind": "functionCall",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "3501:27:20",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "expression": {
                                            "argumentTypes": null,
                                            "id": 7273,
                                            "name": "pool",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 7046,
                                            "src": "3481:4:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                              "typeString": "struct FeSwapSimu.Pool storage ref"
                                            }
                                          },
                                          "id": 7274,
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "memberName": "LiquityBA",
                                          "nodeType": "MemberAccess",
                                          "referencedDeclaration": 7014,
                                          "src": "3481:14:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 7275,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "3480:16:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7276,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6987,
                                    "src": "3480:20:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7282,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3480:49:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7283,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "mul",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6987,
                                "src": "3480:53:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7285,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3480:56:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3463:73:20"
                          },
                          {
                            "assignments": [
                              7288
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7288,
                                "mutability": "mutable",
                                "name": "denominator",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7352,
                                "src": "3551:16:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7287,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3551:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7297,
                            "initialValue": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7294,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "3592:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7295,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "KLastBA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7018,
                                  "src": "3592:12:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "3131",
                                      "id": 7291,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "3584:2:20",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_11_by_1",
                                        "typeString": "int_const 11"
                                      },
                                      "value": "11"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_rational_11_by_1",
                                        "typeString": "int_const 11"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 7289,
                                      "name": "nowKVlaue",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7258,
                                      "src": "3570:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "id": 7290,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "mul",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6987,
                                    "src": "3570:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                      "typeString": "function (uint256,uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7292,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "3570:17:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "id": 7293,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "add",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6937,
                                "src": "3570:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                  "typeString": "function (uint256,uint256) pure returns (uint256)"
                                }
                              },
                              "id": 7296,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "3570:35:20",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3551:54:20"
                          },
                          {
                            "assignments": [
                              7299
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7299,
                                "mutability": "mutable",
                                "name": "liquidityCreator",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7352,
                                "src": "3620:21:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7298,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3620:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7307,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7306,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7300,
                                "name": "numerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "3644:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "3130",
                                        "id": 7303,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3673:2:20",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        },
                                        "value": "10"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_10_by_1",
                                          "typeString": "int_const 10"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7301,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7288,
                                        "src": "3657:11:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7302,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6987,
                                      "src": "3657:15:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7304,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3657:19:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7305,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3656:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3644:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3620:57:20"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7308,
                                "name": "liquidityCreator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7299,
                                "src": "3696:16:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7309,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3715:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3696:20:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 7324,
                            "nodeType": "IfStatement",
                            "src": "3692:160:20",
                            "trueBody": {
                              "id": 7323,
                              "nodeType": "Block",
                              "src": "3718:134:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7315,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7311,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7046,
                                        "src": "3737:4:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                          "typeString": "struct FeSwapSimu.Pool storage ref"
                                        }
                                      },
                                      "id": 7313,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "LiquityBA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7014,
                                      "src": "3737:14:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7314,
                                      "name": "liquidityCreator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7299,
                                      "src": "3755:16:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3737:34:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7316,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3737:34:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7321,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7317,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7046,
                                        "src": "3790:4:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                          "typeString": "struct FeSwapSimu.Pool storage ref"
                                        }
                                      },
                                      "id": 7319,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "feeLiquidityCreatorBA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7026,
                                      "src": "3790:26:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7320,
                                      "name": "liquidityCreator",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7299,
                                      "src": "3820:16:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3790:46:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7322,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3790:46:20"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              7326
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7326,
                                "mutability": "mutable",
                                "name": "liquidityFeswaPool",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7352,
                                "src": "3867:23:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7325,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "3867:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7334,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7333,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7327,
                                "name": "numerator",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7272,
                                "src": "3893:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "hexValue": "3135",
                                        "id": 7330,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "3922:2:20",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_15_by_1",
                                          "typeString": "int_const 15"
                                        },
                                        "value": "15"
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_rational_15_by_1",
                                          "typeString": "int_const 15"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7328,
                                        "name": "denominator",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7288,
                                        "src": "3906:11:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "id": 7329,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "mul",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 6987,
                                      "src": "3906:15:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                        "typeString": "function (uint256,uint256) pure returns (uint256)"
                                      }
                                    },
                                    "id": 7331,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3906:19:20",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 7332,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3905:21:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "3893:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "3867:59:20"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7337,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7335,
                                "name": "liquidityFeswaPool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7326,
                                "src": "3945:18:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": ">",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7336,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3966:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "3945:22:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": null,
                            "id": 7351,
                            "nodeType": "IfStatement",
                            "src": "3941:163:20",
                            "trueBody": {
                              "id": 7350,
                              "nodeType": "Block",
                              "src": "3969:135:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7342,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7338,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7046,
                                        "src": "3988:4:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                          "typeString": "struct FeSwapSimu.Pool storage ref"
                                        }
                                      },
                                      "id": 7340,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "LiquityBA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7014,
                                      "src": "3988:14:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7341,
                                      "name": "liquidityFeswaPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7326,
                                      "src": "4006:18:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "3988:36:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7343,
                                  "nodeType": "ExpressionStatement",
                                  "src": "3988:36:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7348,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 7344,
                                        "name": "pool",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7046,
                                        "src": "4043:4:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                          "typeString": "struct FeSwapSimu.Pool storage ref"
                                        }
                                      },
                                      "id": 7346,
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": true,
                                      "memberName": "feeLiquidityPoolBA",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": 7024,
                                      "src": "4043:23:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "+=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7347,
                                      "name": "liquidityFeswaPool",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7326,
                                      "src": "4070:18:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4043:45:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7349,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4043:45:20"
                                }
                              ]
                            }
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "c4575f93",
                "id": 7355,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "mineFeeBA",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7255,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3333:2:20"
                },
                "returnParameters": {
                  "id": 7256,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3343:0:20"
                },
                "scope": 8631,
                "src": "3315:812:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7539,
                  "nodeType": "Block",
                  "src": "4252:1211:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7372,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7370,
                          "name": "nA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7359,
                          "src": "4263:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 7371,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4269:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "4263:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7373,
                      "nodeType": "ExpressionStatement",
                      "src": "4263:13:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7376,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7374,
                          "name": "nB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7361,
                          "src": "4287:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 7375,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "4293:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "4287:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7377,
                      "nodeType": "ExpressionStatement",
                      "src": "4287:13:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7378,
                          "name": "mineFeeUni",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7153,
                          "src": "4321:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                            "typeString": "function ()"
                          }
                        },
                        "id": 7379,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "4321:12:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7380,
                      "nodeType": "ExpressionStatement",
                      "src": "4321:12:20"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7391,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7384,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7381,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "4359:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7382,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6993,
                                "src": "4359:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7383,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4378:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4359:20:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 7385,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4358:22:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7389,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7386,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "4385:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7387,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6995,
                                "src": "4385:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7388,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4404:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "4385:20:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 7390,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "4384:22:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "4358:48:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 7486,
                        "nodeType": "Block",
                        "src": "4579:542:20",
                        "statements": [
                          {
                            "assignments": [
                              7418
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7418,
                                "mutability": "mutable",
                                "name": "tempB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7486,
                                "src": "4594:10:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7417,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4594:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7426,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7425,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7422,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7419,
                                  "name": "nA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7359,
                                  "src": "4607:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7420,
                                    "name": "poolUni",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7048,
                                    "src": "4612:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                      "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                    }
                                  },
                                  "id": 7421,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "AmountB",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6995,
                                  "src": "4612:15:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4607:20:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7423,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "4630:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7424,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6993,
                                "src": "4630:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4607:38:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4594:51:20"
                          },
                          {
                            "assignments": [
                              7428
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7428,
                                "mutability": "mutable",
                                "name": "tempA",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7486,
                                "src": "4660:10:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7427,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4660:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7436,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7435,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7432,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7429,
                                  "name": "nB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7361,
                                  "src": "4673:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7430,
                                    "name": "poolUni",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7048,
                                    "src": "4678:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                      "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                    }
                                  },
                                  "id": 7431,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "AmountA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6993,
                                  "src": "4678:15:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4673:20:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7433,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "4696:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7434,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6995,
                                "src": "4696:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4673:38:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4660:51:20"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7439,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7437,
                                "name": "tempB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7418,
                                "src": "4729:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7438,
                                "name": "nB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7361,
                                "src": "4738:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4729:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 7457,
                              "nodeType": "Block",
                              "src": "4841:81:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7451,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7449,
                                      "name": "nAddedB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7366,
                                      "src": "4860:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7450,
                                      "name": "nB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7361,
                                      "src": "4870:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4860:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7452,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4860:12:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7455,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7453,
                                      "name": "nAddedA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7364,
                                      "src": "4891:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7454,
                                      "name": "tempA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7428,
                                      "src": "4901:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4891:15:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7456,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4891:15:20"
                                }
                              ]
                            },
                            "id": 7458,
                            "nodeType": "IfStatement",
                            "src": "4726:196:20",
                            "trueBody": {
                              "id": 7448,
                              "nodeType": "Block",
                              "src": "4741:81:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7442,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7440,
                                      "name": "nAddedA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7364,
                                      "src": "4760:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7441,
                                      "name": "nA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7359,
                                      "src": "4770:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4760:12:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7443,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4760:12:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7446,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7444,
                                      "name": "nAddedB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7366,
                                      "src": "4791:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7445,
                                      "name": "tempB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7418,
                                      "src": "4801:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "4791:15:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7447,
                                  "nodeType": "ExpressionStatement",
                                  "src": "4791:15:20"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              7460
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7460,
                                "mutability": "mutable",
                                "name": "_lpABA",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7486,
                                "src": "4936:11:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7459,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "4936:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7468,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7467,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7464,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7461,
                                  "name": "nAddedA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7364,
                                  "src": "4950:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7462,
                                    "name": "poolUni",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7048,
                                    "src": "4960:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                      "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                    }
                                  },
                                  "id": 7463,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "Liquity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6997,
                                  "src": "4960:15:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "4950:25:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7465,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "4978:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7466,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6993,
                                "src": "4978:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4950:43:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "4936:57:20"
                          },
                          {
                            "assignments": [
                              7470
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7470,
                                "mutability": "mutable",
                                "name": "_lpABB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7486,
                                "src": "5008:11:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7469,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5008:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7478,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7477,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7474,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7471,
                                  "name": "nAddedB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7366,
                                  "src": "5022:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7472,
                                    "name": "poolUni",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7048,
                                    "src": "5032:7:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                      "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                    }
                                  },
                                  "id": 7473,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "Liquity",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6997,
                                  "src": "5032:15:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5022:25:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7475,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "5050:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7476,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6995,
                                "src": "5050:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5022:43:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "5008:57:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7484,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7479,
                                "name": "lpAB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7368,
                                "src": "5083:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7481,
                                    "name": "_lpABA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7460,
                                    "src": "5094:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7482,
                                    "name": "_lpABB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7470,
                                    "src": "5102:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7480,
                                  "name": "min",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8576,
                                  "src": "5090:3:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7483,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "5090:19:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5083:26:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7485,
                            "nodeType": "ExpressionStatement",
                            "src": "5083:26:20"
                          }
                        ]
                      },
                      "id": 7487,
                      "nodeType": "IfStatement",
                      "src": "4354:767:20",
                      "trueBody": {
                        "id": 7416,
                        "nodeType": "Block",
                        "src": "4408:155:20",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7394,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7392,
                                "name": "nAddedA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7364,
                                "src": "4423:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7393,
                                "name": "nA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7359,
                                "src": "4433:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4423:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7395,
                            "nodeType": "ExpressionStatement",
                            "src": "4423:12:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7398,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7396,
                                "name": "nAddedB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7366,
                                "src": "4450:7:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7397,
                                "name": "nB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7361,
                                "src": "4460:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4450:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7399,
                            "nodeType": "ExpressionStatement",
                            "src": "4450:12:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7408,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7400,
                                "name": "lpAB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7368,
                                "src": "4477:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7404,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 7402,
                                        "name": "nAddedA",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7364,
                                        "src": "4489:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 7403,
                                        "name": "nAddedB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7366,
                                        "src": "4499:7:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "4489:17:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7401,
                                    "name": "sqrt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8630,
                                    "src": "4484:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7405,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "4484:23:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 7406,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4510:4:20",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                },
                                "src": "4484:30:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "4477:37:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7409,
                            "nodeType": "ExpressionStatement",
                            "src": "4477:37:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7414,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7410,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "4529:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7412,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "Liquity",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6997,
                                "src": "4529:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 7413,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "4547:4:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              },
                              "src": "4529:22:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7415,
                            "nodeType": "ExpressionStatement",
                            "src": "4529:22:20"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7492,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7488,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "5141:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 7490,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6993,
                          "src": "5141:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7491,
                          "name": "nAddedA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7364,
                          "src": "5160:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5141:26:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7493,
                      "nodeType": "ExpressionStatement",
                      "src": "5141:26:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7498,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7494,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "5178:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 7496,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6995,
                          "src": "5178:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7497,
                          "name": "nAddedB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7366,
                          "src": "5197:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5178:26:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7499,
                      "nodeType": "ExpressionStatement",
                      "src": "5178:26:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7504,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7500,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "5216:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 7502,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "Liquity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6997,
                          "src": "5216:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7503,
                          "name": "lpAB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7368,
                          "src": "5235:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5216:23:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7505,
                      "nodeType": "ExpressionStatement",
                      "src": "5216:23:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7516,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7506,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "5253:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 7508,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "KLast",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6999,
                          "src": "5253:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7514,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7510,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "5274:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7511,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6993,
                                "src": "5274:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7512,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "5292:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7513,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6995,
                                "src": "5292:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5274:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7509,
                            "name": "sqrt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8630,
                            "src": "5269:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7515,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "5269:39:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5253:55:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7517,
                      "nodeType": "ExpressionStatement",
                      "src": "5253:55:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7523,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7518,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "5337:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7520,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7519,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7357,
                              "src": "5343:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5337:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7521,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "5337:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7522,
                          "name": "nAddedA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7364,
                          "src": "5362:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5337:32:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7524,
                      "nodeType": "ExpressionStatement",
                      "src": "5337:32:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7530,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7525,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "5380:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7527,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7526,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7357,
                              "src": "5386:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5380:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7528,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "5380:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7529,
                          "name": "nAddedB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7366,
                          "src": "5405:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5380:32:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7531,
                      "nodeType": "ExpressionStatement",
                      "src": "5380:32:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7537,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7532,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "5423:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7534,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7533,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7357,
                              "src": "5429:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "5423:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7535,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "liquityUni",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7039,
                          "src": "5423:24:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7536,
                          "name": "lpAB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7368,
                          "src": "5451:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "5423:32:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7538,
                      "nodeType": "ExpressionStatement",
                      "src": "5423:32:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "dee16927",
                "id": 7540,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidityUni",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7362,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7357,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7540,
                      "src": "4164:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7356,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4164:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7359,
                      "mutability": "mutable",
                      "name": "nA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7540,
                      "src": "4177:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7358,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4177:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7361,
                      "mutability": "mutable",
                      "name": "nB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7540,
                      "src": "4186:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7360,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4186:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4163:32:20"
                },
                "returnParameters": {
                  "id": 7369,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7364,
                      "mutability": "mutable",
                      "name": "nAddedA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7540,
                      "src": "4213:12:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7363,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4213:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7366,
                      "mutability": "mutable",
                      "name": "nAddedB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7540,
                      "src": "4227:12:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7365,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4227:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7368,
                      "mutability": "mutable",
                      "name": "lpAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7540,
                      "src": "4241:9:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7367,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "4241:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "4211:40:20"
                },
                "scope": 8631,
                "src": "4139:1324:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7724,
                  "nodeType": "Block",
                  "src": "5581:1126:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7557,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7555,
                          "name": "nA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7544,
                          "src": "5592:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 7556,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5598:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "5592:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7558,
                      "nodeType": "ExpressionStatement",
                      "src": "5592:13:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7561,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7559,
                          "name": "nB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7546,
                          "src": "5616:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 7560,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "5622:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "5616:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7562,
                      "nodeType": "ExpressionStatement",
                      "src": "5616:13:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7563,
                          "name": "mineFeeAB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7254,
                          "src": "5650:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                            "typeString": "function ()"
                          }
                        },
                        "id": 7564,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "5650:11:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7565,
                      "nodeType": "ExpressionStatement",
                      "src": "5650:11:20"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7576,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7569,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7566,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "5677:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7567,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountAA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7004,
                                "src": "5677:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7568,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5694:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5677:18:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 7570,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5676:20:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7574,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7571,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "5701:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7572,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7006,
                                "src": "5701:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7573,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5717:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "5701:17:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 7575,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "5700:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "5676:43:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 7671,
                        "nodeType": "Block",
                        "src": "5883:513:20",
                        "statements": [
                          {
                            "assignments": [
                              7603
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7603,
                                "mutability": "mutable",
                                "name": "tempB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7671,
                                "src": "5898:10:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7602,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5898:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7611,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7610,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7607,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7604,
                                  "name": "nA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7544,
                                  "src": "5911:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7605,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "5916:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7606,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "AmountB",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7006,
                                  "src": "5916:12:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5911:17:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7608,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "5931:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7609,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountAA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7004,
                                "src": "5931:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5911:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "5898:46:20"
                          },
                          {
                            "assignments": [
                              7613
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7613,
                                "mutability": "mutable",
                                "name": "tempA",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7671,
                                "src": "5959:10:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7612,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "5959:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7621,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7620,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7617,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7614,
                                  "name": "nB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7546,
                                  "src": "5972:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7615,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "5977:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7616,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "AmountAA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7004,
                                  "src": "5977:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "5972:18:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7618,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "5993:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7619,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7006,
                                "src": "5993:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5972:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "5959:46:20"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7624,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7622,
                                "name": "tempB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7603,
                                "src": "6023:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7623,
                                "name": "nB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7546,
                                "src": "6032:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6023:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 7642,
                              "nodeType": "Block",
                              "src": "6131:77:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7636,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7634,
                                      "name": "nOutB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7551,
                                      "src": "6150:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7635,
                                      "name": "nB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7546,
                                      "src": "6158:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6150:10:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7637,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6150:10:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7640,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7638,
                                      "name": "nOutA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7549,
                                      "src": "6179:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7639,
                                      "name": "tempA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7613,
                                      "src": "6187:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6179:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7641,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6179:13:20"
                                }
                              ]
                            },
                            "id": 7643,
                            "nodeType": "IfStatement",
                            "src": "6020:188:20",
                            "trueBody": {
                              "id": 7633,
                              "nodeType": "Block",
                              "src": "6035:77:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7627,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7625,
                                      "name": "nOutA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7549,
                                      "src": "6054:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7626,
                                      "name": "nA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7544,
                                      "src": "6062:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6054:10:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7628,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6054:10:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7631,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7629,
                                      "name": "nOutB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7551,
                                      "src": "6083:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7630,
                                      "name": "tempB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7603,
                                      "src": "6091:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "6083:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7632,
                                  "nodeType": "ExpressionStatement",
                                  "src": "6083:13:20"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              7645
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7645,
                                "mutability": "mutable",
                                "name": "_lpABA",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7671,
                                "src": "6222:11:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7644,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6222:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7653,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7652,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7649,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7646,
                                  "name": "nOutA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7549,
                                  "src": "6236:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7647,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "6244:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7648,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "LiquityAB",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7012,
                                  "src": "6244:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6236:22:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7650,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "6261:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7651,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountAA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7004,
                                "src": "6261:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6236:38:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6222:52:20"
                          },
                          {
                            "assignments": [
                              7655
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7655,
                                "mutability": "mutable",
                                "name": "_lpABB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7671,
                                "src": "6289:11:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7654,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "6289:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7663,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7662,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7659,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7656,
                                  "name": "nOutB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7551,
                                  "src": "6303:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7657,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "6311:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7658,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "LiquityAB",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7012,
                                  "src": "6311:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "6303:22:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7660,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "6328:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7661,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7006,
                                "src": "6328:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6303:37:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "6289:51:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7669,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7664,
                                "name": "lpAB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7553,
                                "src": "6358:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7666,
                                    "name": "_lpABA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7645,
                                    "src": "6369:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7667,
                                    "name": "_lpABB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7655,
                                    "src": "6377:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7665,
                                  "name": "min",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8576,
                                  "src": "6365:3:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7668,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "6365:19:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6358:26:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7670,
                            "nodeType": "ExpressionStatement",
                            "src": "6358:26:20"
                          }
                        ]
                      },
                      "id": 7672,
                      "nodeType": "IfStatement",
                      "src": "5672:724:20",
                      "trueBody": {
                        "id": 7601,
                        "nodeType": "Block",
                        "src": "5721:146:20",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7579,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7577,
                                "name": "nOutA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7549,
                                "src": "5736:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7578,
                                "name": "nA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7544,
                                "src": "5744:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5736:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7580,
                            "nodeType": "ExpressionStatement",
                            "src": "5736:10:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7583,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7581,
                                "name": "nOutB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7551,
                                "src": "5761:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7582,
                                "name": "nB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7546,
                                "src": "5769:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5761:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7584,
                            "nodeType": "ExpressionStatement",
                            "src": "5761:10:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7593,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7585,
                                "name": "lpAB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7553,
                                "src": "5786:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7592,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7589,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 7587,
                                        "name": "nOutA",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7549,
                                        "src": "5798:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 7588,
                                        "name": "nOutB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7551,
                                        "src": "5806:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "5798:13:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7586,
                                    "name": "sqrt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8630,
                                    "src": "5793:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7590,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "5793:19:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 7591,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "5815:4:20",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                },
                                "src": "5793:26:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "5786:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7594,
                            "nodeType": "ExpressionStatement",
                            "src": "5786:33:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7599,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7595,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "5834:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7597,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "LiquityAB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7012,
                                "src": "5834:14:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 7598,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "5851:4:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              },
                              "src": "5834:21:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7600,
                            "nodeType": "ExpressionStatement",
                            "src": "5834:21:20"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7677,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7673,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "6406:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7675,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountAA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7004,
                          "src": "6406:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7676,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7549,
                          "src": "6423:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6406:22:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7678,
                      "nodeType": "ExpressionStatement",
                      "src": "6406:22:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7683,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7679,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "6439:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7681,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7006,
                          "src": "6439:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7682,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7551,
                          "src": "6455:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6439:21:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7684,
                      "nodeType": "ExpressionStatement",
                      "src": "6439:21:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7689,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7685,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "6472:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7687,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "LiquityAB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7012,
                          "src": "6472:14:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7688,
                          "name": "lpAB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7553,
                          "src": "6490:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6472:22:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7690,
                      "nodeType": "ExpressionStatement",
                      "src": "6472:22:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7701,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7691,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "6508:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7693,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "KLastAB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7016,
                          "src": "6508:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7699,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7695,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "6528:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7696,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountAA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7004,
                                "src": "6528:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7697,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "6544:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7698,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7006,
                                "src": "6544:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6528:28:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7694,
                            "name": "sqrt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8630,
                            "src": "6523:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7700,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "6523:34:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6508:49:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7702,
                      "nodeType": "ExpressionStatement",
                      "src": "6508:49:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7708,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7703,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "6586:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7705,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7704,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7542,
                              "src": "6592:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6586:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7706,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "6586:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7707,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7549,
                          "src": "6611:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6586:30:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7709,
                      "nodeType": "ExpressionStatement",
                      "src": "6586:30:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7715,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7710,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "6627:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7712,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7711,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7542,
                              "src": "6633:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6627:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7713,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "6627:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7714,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7551,
                          "src": "6652:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6627:30:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7716,
                      "nodeType": "ExpressionStatement",
                      "src": "6627:30:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7722,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7717,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "6668:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7719,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7718,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7542,
                              "src": "6674:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "6668:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7720,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "liquityAB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7035,
                          "src": "6668:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7721,
                          "name": "lpAB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7553,
                          "src": "6695:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "6668:31:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7723,
                      "nodeType": "ExpressionStatement",
                      "src": "6668:31:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "6c95361d",
                "id": 7725,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidityAB",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7547,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7542,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7725,
                      "src": "5497:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7541,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5497:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7544,
                      "mutability": "mutable",
                      "name": "nA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7725,
                      "src": "5510:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7543,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5510:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7546,
                      "mutability": "mutable",
                      "name": "nB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7725,
                      "src": "5519:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7545,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5519:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5496:32:20"
                },
                "returnParameters": {
                  "id": 7554,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7549,
                      "mutability": "mutable",
                      "name": "nOutA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7725,
                      "src": "5546:10:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7548,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5546:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7551,
                      "mutability": "mutable",
                      "name": "nOutB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7725,
                      "src": "5558:10:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7550,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5558:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7553,
                      "mutability": "mutable",
                      "name": "lpAB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7725,
                      "src": "5570:9:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7552,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "5570:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "5544:36:20"
                },
                "scope": 8631,
                "src": "5473:1234:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 7909,
                  "nodeType": "Block",
                  "src": "6827:1128:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7742,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7740,
                          "name": "nA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7729,
                          "src": "6838:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 7741,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6844:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "6838:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7743,
                      "nodeType": "ExpressionStatement",
                      "src": "6838:13:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7746,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7744,
                          "name": "nB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7731,
                          "src": "6862:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 7745,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "6868:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "6862:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7747,
                      "nodeType": "ExpressionStatement",
                      "src": "6862:13:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7748,
                          "name": "mineFeeBA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7355,
                          "src": "6896:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                            "typeString": "function ()"
                          }
                        },
                        "id": 7749,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "6896:11:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7750,
                      "nodeType": "ExpressionStatement",
                      "src": "6896:11:20"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 7761,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7751,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "6923:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7752,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7008,
                                "src": "6923:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7753,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6939:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6923:17:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 7755,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6922:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "||",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7759,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7756,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "6946:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7757,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountBB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7010,
                                "src": "6946:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 7758,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "6963:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              },
                              "src": "6946:18:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "id": 7760,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "6945:20:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "6922:43:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "id": 7856,
                        "nodeType": "Block",
                        "src": "7129:513:20",
                        "statements": [
                          {
                            "assignments": [
                              7788
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7788,
                                "mutability": "mutable",
                                "name": "tempB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7856,
                                "src": "7144:10:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7787,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7144:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7796,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7795,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7792,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7789,
                                  "name": "nA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7729,
                                  "src": "7157:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7790,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "7162:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7791,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "AmountBB",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7010,
                                  "src": "7162:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7157:18:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7793,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "7178:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7794,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7008,
                                "src": "7178:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7157:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7144:46:20"
                          },
                          {
                            "assignments": [
                              7798
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7798,
                                "mutability": "mutable",
                                "name": "tempA",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7856,
                                "src": "7205:10:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7797,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7205:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7806,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7805,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7802,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7799,
                                  "name": "nB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7731,
                                  "src": "7218:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7800,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "7223:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7801,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "AmountA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7008,
                                  "src": "7223:12:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7218:17:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7803,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "7238:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7804,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountBB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7010,
                                "src": "7238:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7218:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7205:46:20"
                          },
                          {
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7809,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 7807,
                                "name": "tempB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7788,
                                "src": "7269:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 7808,
                                "name": "nB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7731,
                                "src": "7278:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7269:11:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "falseBody": {
                              "id": 7827,
                              "nodeType": "Block",
                              "src": "7377:77:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7821,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7819,
                                      "name": "nOutB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7736,
                                      "src": "7396:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7820,
                                      "name": "nB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7731,
                                      "src": "7404:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7396:10:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7822,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7396:10:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7825,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7823,
                                      "name": "nOutA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7734,
                                      "src": "7425:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7824,
                                      "name": "tempA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7798,
                                      "src": "7433:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7425:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7826,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7425:13:20"
                                }
                              ]
                            },
                            "id": 7828,
                            "nodeType": "IfStatement",
                            "src": "7266:188:20",
                            "trueBody": {
                              "id": 7818,
                              "nodeType": "Block",
                              "src": "7281:77:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7812,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7810,
                                      "name": "nOutA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7734,
                                      "src": "7300:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7811,
                                      "name": "nA",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7729,
                                      "src": "7308:2:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7300:10:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7813,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7300:10:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7816,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 7814,
                                      "name": "nOutB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7736,
                                      "src": "7329:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 7815,
                                      "name": "tempB",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7788,
                                      "src": "7337:5:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "7329:13:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 7817,
                                  "nodeType": "ExpressionStatement",
                                  "src": "7329:13:20"
                                }
                              ]
                            }
                          },
                          {
                            "assignments": [
                              7830
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7830,
                                "mutability": "mutable",
                                "name": "_lpBAA",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7856,
                                "src": "7468:11:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7829,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7468:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7838,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7837,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7834,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7831,
                                  "name": "nOutA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7734,
                                  "src": "7482:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7832,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "7490:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7833,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "LiquityBA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7014,
                                  "src": "7490:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7482:22:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7835,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "7507:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7836,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7008,
                                "src": "7507:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7482:37:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7468:51:20"
                          },
                          {
                            "assignments": [
                              7840
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 7840,
                                "mutability": "mutable",
                                "name": "_lpBAB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 7856,
                                "src": "7534:11:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 7839,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "7534:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 7848,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7847,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7844,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 7841,
                                  "name": "nOutB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7736,
                                  "src": "7548:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "*",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 7842,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "7556:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 7843,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "LiquityBA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7014,
                                  "src": "7556:14:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "7548:22:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7845,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "7573:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7846,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountBB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7010,
                                "src": "7573:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7548:38:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "7534:52:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7854,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7849,
                                "name": "lpBA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7738,
                                "src": "7604:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 7851,
                                    "name": "_lpBAA",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7830,
                                    "src": "7615:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  {
                                    "argumentTypes": null,
                                    "id": 7852,
                                    "name": "_lpBAB",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7840,
                                    "src": "7623:6:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "id": 7850,
                                  "name": "min",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8576,
                                  "src": "7611:3:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 7853,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "7611:19:20",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7604:26:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7855,
                            "nodeType": "ExpressionStatement",
                            "src": "7604:26:20"
                          }
                        ]
                      },
                      "id": 7857,
                      "nodeType": "IfStatement",
                      "src": "6918:724:20",
                      "trueBody": {
                        "id": 7786,
                        "nodeType": "Block",
                        "src": "6967:146:20",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7764,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7762,
                                "name": "nOutA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7734,
                                "src": "6982:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7763,
                                "name": "nA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7729,
                                "src": "6990:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "6982:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7765,
                            "nodeType": "ExpressionStatement",
                            "src": "6982:10:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7768,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7766,
                                "name": "nOutB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7736,
                                "src": "7007:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 7767,
                                "name": "nB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7731,
                                "src": "7015:2:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7007:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7769,
                            "nodeType": "ExpressionStatement",
                            "src": "7007:10:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7778,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 7770,
                                "name": "lpBA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7738,
                                "src": "7032:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 7777,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 7774,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "id": 7772,
                                        "name": "nOutA",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7734,
                                        "src": "7044:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "*",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "id": 7773,
                                        "name": "nOutB",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 7736,
                                        "src": "7052:5:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "src": "7044:13:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    ],
                                    "id": 7771,
                                    "name": "sqrt",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8630,
                                    "src": "7039:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                                      "typeString": "function (uint256) pure returns (uint256)"
                                    }
                                  },
                                  "id": 7775,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "7039:19:20",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "-",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31303030",
                                  "id": 7776,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7061:4:20",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1000_by_1",
                                    "typeString": "int_const 1000"
                                  },
                                  "value": "1000"
                                },
                                "src": "7039:26:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7032:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7779,
                            "nodeType": "ExpressionStatement",
                            "src": "7032:33:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 7784,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7780,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "7080:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7782,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "LiquityBA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7014,
                                "src": "7080:14:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 7783,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "7097:4:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              },
                              "src": "7080:21:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 7785,
                            "nodeType": "ExpressionStatement",
                            "src": "7080:21:20"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7862,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7858,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "7656:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7860,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7008,
                          "src": "7656:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7861,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7734,
                          "src": "7672:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7656:21:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7863,
                      "nodeType": "ExpressionStatement",
                      "src": "7656:21:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7864,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "7688:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7866,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountBB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7010,
                          "src": "7688:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7867,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7736,
                          "src": "7705:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7688:22:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7869,
                      "nodeType": "ExpressionStatement",
                      "src": "7688:22:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7870,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "7722:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7872,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "LiquityBA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7014,
                          "src": "7722:14:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7873,
                          "name": "lpBA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7738,
                          "src": "7740:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7722:22:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7875,
                      "nodeType": "ExpressionStatement",
                      "src": "7722:22:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7886,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7876,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "7755:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 7878,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "KLastBA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7018,
                          "src": "7755:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 7884,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7880,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "7775:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7881,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7008,
                                "src": "7775:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7882,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "7790:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 7883,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountBB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7010,
                                "src": "7790:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "7775:28:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7879,
                            "name": "sqrt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8630,
                            "src": "7770:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 7885,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7770:34:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7755:49:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7887,
                      "nodeType": "ExpressionStatement",
                      "src": "7755:49:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7893,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7888,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "7834:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7890,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7889,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7727,
                              "src": "7840:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7834:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7891,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "7834:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7892,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7734,
                          "src": "7859:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7834:30:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7894,
                      "nodeType": "ExpressionStatement",
                      "src": "7834:30:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7900,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7895,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "7875:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7897,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7896,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7727,
                              "src": "7881:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7875:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7898,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "7875:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7899,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7736,
                          "src": "7900:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7875:30:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7901,
                      "nodeType": "ExpressionStatement",
                      "src": "7875:30:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7907,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7902,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "7916:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7904,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7903,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7727,
                              "src": "7922:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "7916:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7905,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "liquityBA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7037,
                          "src": "7916:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7906,
                          "name": "lpBA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7738,
                          "src": "7943:4:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "7916:31:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7908,
                      "nodeType": "ExpressionStatement",
                      "src": "7916:31:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "312f0ac3",
                "id": 7910,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "addLiquidityBA",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7732,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7727,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7910,
                      "src": "6743:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7726,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6743:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7729,
                      "mutability": "mutable",
                      "name": "nA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7910,
                      "src": "6756:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7728,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6756:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7731,
                      "mutability": "mutable",
                      "name": "nB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7910,
                      "src": "6765:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7730,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6765:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6742:32:20"
                },
                "returnParameters": {
                  "id": 7739,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7734,
                      "mutability": "mutable",
                      "name": "nOutA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7910,
                      "src": "6792:10:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7733,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6792:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7736,
                      "mutability": "mutable",
                      "name": "nOutB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7910,
                      "src": "6804:10:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7735,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6804:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7738,
                      "mutability": "mutable",
                      "name": "lpBA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 7910,
                      "src": "6816:9:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7737,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "6816:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "6790:36:20"
                },
                "scope": 8631,
                "src": "6719:1236:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8007,
                  "nodeType": "Block",
                  "src": "8073:608:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 7927,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 7922,
                              "name": "nLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7914,
                              "src": "8092:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 7923,
                                  "name": "users",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7044,
                                  "src": "8106:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                    "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                                  }
                                },
                                "id": 7925,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 7924,
                                  "name": "userID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7912,
                                  "src": "8112:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8106:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$7040_storage",
                                  "typeString": "struct FeSwapSimu.User storage ref"
                                }
                              },
                              "id": 7926,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquityUni",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7039,
                              "src": "8106:24:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8092:38:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4e6f2073756368204c6971756964697479",
                            "id": 7928,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8132:19:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_55c3503345e6f73579856d31e8d6692c64219a58d0fc202b0ab2c4d967cf9e27",
                              "typeString": "literal_string \"No such Liquidity\""
                            },
                            "value": "No such Liquidity"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_55c3503345e6f73579856d31e8d6692c64219a58d0fc202b0ab2c4d967cf9e27",
                              "typeString": "literal_string \"No such Liquidity\""
                            }
                          ],
                          "id": 7921,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "8084:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 7929,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8084:68:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7930,
                      "nodeType": "ExpressionStatement",
                      "src": "8084:68:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 7931,
                          "name": "mineFeeUni",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7153,
                          "src": "8163:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                            "typeString": "function ()"
                          }
                        },
                        "id": 7932,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8163:12:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 7933,
                      "nodeType": "ExpressionStatement",
                      "src": "8163:12:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7943,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7934,
                          "name": "nRemoveA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7917,
                          "src": "8196:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7942,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7937,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "8222:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7938,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6993,
                                "src": "8222:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7935,
                                "name": "nLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7914,
                                "src": "8207:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7936,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6987,
                              "src": "8207:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7939,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8207:31:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7940,
                              "name": "poolUni",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7048,
                              "src": "8241:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                "typeString": "struct FeSwapSimu.PoolUni storage ref"
                              }
                            },
                            "id": 7941,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Liquity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6997,
                            "src": "8241:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8207:49:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8196:60:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7944,
                      "nodeType": "ExpressionStatement",
                      "src": "8196:60:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7954,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 7945,
                          "name": "nRemoveB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7919,
                          "src": "8267:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 7953,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7948,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "8293:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 7949,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6995,
                                "src": "8293:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 7946,
                                "name": "nLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7914,
                                "src": "8278:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 7947,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6987,
                              "src": "8278:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 7950,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8278:31:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 7951,
                              "name": "poolUni",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7048,
                              "src": "8312:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                "typeString": "struct FeSwapSimu.PoolUni storage ref"
                              }
                            },
                            "id": 7952,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "Liquity",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6997,
                            "src": "8312:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8278:49:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8267:60:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7955,
                      "nodeType": "ExpressionStatement",
                      "src": "8267:60:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7961,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7956,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "8348:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7958,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7957,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7912,
                              "src": "8354:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8348:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7959,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "liquityUni",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7039,
                          "src": "8348:24:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7960,
                          "name": "nLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7914,
                          "src": "8376:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8348:38:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7962,
                      "nodeType": "ExpressionStatement",
                      "src": "8348:38:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7967,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7963,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "8397:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 7965,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "Liquity",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6997,
                          "src": "8397:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7966,
                          "name": "nLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7914,
                          "src": "8416:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8397:29:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7968,
                      "nodeType": "ExpressionStatement",
                      "src": "8397:29:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7974,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7969,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "8447:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7971,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7970,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7912,
                              "src": "8453:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8447:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7972,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "8447:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7973,
                          "name": "nRemoveA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7917,
                          "src": "8472:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8447:33:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7975,
                      "nodeType": "ExpressionStatement",
                      "src": "8447:33:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7981,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 7976,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "8491:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 7978,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 7977,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7912,
                              "src": "8497:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "8491:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 7979,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "8491:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7980,
                          "name": "nRemoveB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7919,
                          "src": "8516:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8491:33:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7982,
                      "nodeType": "ExpressionStatement",
                      "src": "8491:33:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7987,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7983,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "8537:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 7985,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6993,
                          "src": "8537:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7986,
                          "name": "nRemoveA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7917,
                          "src": "8556:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8537:27:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7988,
                      "nodeType": "ExpressionStatement",
                      "src": "8537:27:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 7993,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7989,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "8575:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 7991,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6995,
                          "src": "8575:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 7992,
                          "name": "nRemoveB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7919,
                          "src": "8594:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8575:27:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 7994,
                      "nodeType": "ExpressionStatement",
                      "src": "8575:27:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8005,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 7995,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "8614:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 7997,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "KLast",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6999,
                          "src": "8614:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8003,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 7999,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "8635:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 8000,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6993,
                                "src": "8635:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8001,
                                  "name": "poolUni",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7048,
                                  "src": "8653:7:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                    "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                  }
                                },
                                "id": 8002,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 6995,
                                "src": "8653:15:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "8635:33:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 7998,
                            "name": "sqrt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8630,
                            "src": "8630:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8004,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8630:39:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8614:55:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8006,
                      "nodeType": "ExpressionStatement",
                      "src": "8614:55:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "afec93db",
                "id": 8008,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityUni",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 7915,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7912,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8008,
                      "src": "7995:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7911,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "7995:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7914,
                      "mutability": "mutable",
                      "name": "nLiquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8008,
                      "src": "8008:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7913,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8008:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "7994:31:20"
                },
                "returnParameters": {
                  "id": 7920,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 7917,
                      "mutability": "mutable",
                      "name": "nRemoveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8008,
                      "src": "8043:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7916,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8043:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 7919,
                      "mutability": "mutable",
                      "name": "nRemoveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8008,
                      "src": "8058:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 7918,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8058:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8041:31:20"
                },
                "scope": 8631,
                "src": "7967:714:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8105,
                  "nodeType": "Block",
                  "src": "8801:586:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8025,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8020,
                              "name": "nLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8012,
                              "src": "8820:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 8021,
                                  "name": "users",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7044,
                                  "src": "8834:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                    "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                                  }
                                },
                                "id": 8023,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 8022,
                                  "name": "userID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8010,
                                  "src": "8840:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "8834:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$7040_storage",
                                  "typeString": "struct FeSwapSimu.User storage ref"
                                }
                              },
                              "id": 8024,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquityAB",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7035,
                              "src": "8834:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "8820:37:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4e6f2073756368204c6971756964697479",
                            "id": 8026,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "8859:19:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_55c3503345e6f73579856d31e8d6692c64219a58d0fc202b0ab2c4d967cf9e27",
                              "typeString": "literal_string \"No such Liquidity\""
                            },
                            "value": "No such Liquidity"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_55c3503345e6f73579856d31e8d6692c64219a58d0fc202b0ab2c4d967cf9e27",
                              "typeString": "literal_string \"No such Liquidity\""
                            }
                          ],
                          "id": 8019,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "8812:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8027,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8812:67:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8028,
                      "nodeType": "ExpressionStatement",
                      "src": "8812:67:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 8029,
                          "name": "mineFeeAB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7254,
                          "src": "8890:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                            "typeString": "function ()"
                          }
                        },
                        "id": 8030,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "8890:11:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8031,
                      "nodeType": "ExpressionStatement",
                      "src": "8890:11:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8041,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8032,
                          "name": "nRemoveA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8015,
                          "src": "8922:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8040,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8035,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "8948:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8036,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountAA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7004,
                                "src": "8948:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8033,
                                "name": "nLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8012,
                                "src": "8933:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8034,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6987,
                              "src": "8933:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8037,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "8933:29:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8038,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7046,
                              "src": "8965:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                "typeString": "struct FeSwapSimu.Pool storage ref"
                              }
                            },
                            "id": 8039,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "LiquityAB",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7012,
                            "src": "8965:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "8933:46:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8922:57:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8042,
                      "nodeType": "ExpressionStatement",
                      "src": "8922:57:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8052,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8043,
                          "name": "nRemoveB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8017,
                          "src": "8990:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8051,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8046,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "9016:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8047,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7006,
                                "src": "9016:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8044,
                                "name": "nLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8012,
                                "src": "9001:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8045,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6987,
                              "src": "9001:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8048,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9001:28:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8049,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7046,
                              "src": "9032:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                "typeString": "struct FeSwapSimu.Pool storage ref"
                              }
                            },
                            "id": 8050,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "LiquityAB",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7012,
                            "src": "9032:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9001:45:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "8990:56:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8053,
                      "nodeType": "ExpressionStatement",
                      "src": "8990:56:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8059,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8054,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "9067:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8056,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8055,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8010,
                              "src": "9073:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9067:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8057,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "liquityAB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7035,
                          "src": "9067:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8058,
                          "name": "nLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8012,
                          "src": "9094:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9067:37:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8060,
                      "nodeType": "ExpressionStatement",
                      "src": "9067:37:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8065,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8061,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "9115:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8063,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "LiquityAB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7012,
                          "src": "9115:14:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8064,
                          "name": "nLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8012,
                          "src": "9133:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9115:28:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8066,
                      "nodeType": "ExpressionStatement",
                      "src": "9115:28:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8072,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8067,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "9164:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8069,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8068,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8010,
                              "src": "9170:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9164:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8070,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "9164:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8071,
                          "name": "nRemoveA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8015,
                          "src": "9189:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9164:33:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8073,
                      "nodeType": "ExpressionStatement",
                      "src": "9164:33:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8079,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8074,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "9208:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8076,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8075,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8010,
                              "src": "9214:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9208:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8077,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "9208:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8078,
                          "name": "nRemoveB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8017,
                          "src": "9233:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9208:33:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8080,
                      "nodeType": "ExpressionStatement",
                      "src": "9208:33:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8085,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8081,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "9254:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8083,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountAA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7004,
                          "src": "9254:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8084,
                          "name": "nRemoveA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8015,
                          "src": "9271:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9254:25:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8086,
                      "nodeType": "ExpressionStatement",
                      "src": "9254:25:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8091,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8087,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "9290:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8089,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7006,
                          "src": "9290:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8090,
                          "name": "nRemoveB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8017,
                          "src": "9306:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9290:24:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8092,
                      "nodeType": "ExpressionStatement",
                      "src": "9290:24:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8103,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8093,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "9326:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8095,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "KLastAB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7016,
                          "src": "9326:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8101,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8097,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "9346:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8098,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountAA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7004,
                                "src": "9346:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8099,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "9362:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8100,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7006,
                                "src": "9362:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "9346:28:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8096,
                            "name": "sqrt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8630,
                            "src": "9341:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8102,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "9341:34:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9326:49:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8104,
                      "nodeType": "ExpressionStatement",
                      "src": "9326:49:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "9b0ae61b",
                "id": 8106,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityAB",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8013,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8010,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8106,
                      "src": "8723:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8009,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8723:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8012,
                      "mutability": "mutable",
                      "name": "nLiquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8106,
                      "src": "8736:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8011,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8736:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8722:31:20"
                },
                "returnParameters": {
                  "id": 8018,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8015,
                      "mutability": "mutable",
                      "name": "nRemoveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8106,
                      "src": "8771:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8014,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8771:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8017,
                      "mutability": "mutable",
                      "name": "nRemoveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8106,
                      "src": "8786:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8016,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "8786:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "8769:31:20"
                },
                "scope": 8631,
                "src": "8696:691:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8203,
                  "nodeType": "Block",
                  "src": "9501:596:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8123,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8118,
                              "name": "nLiquidity",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8110,
                              "src": "9520:10:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "id": 8119,
                                  "name": "users",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7044,
                                  "src": "9534:5:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                    "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                                  }
                                },
                                "id": 8121,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "id": 8120,
                                  "name": "userID",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8108,
                                  "src": "9540:6:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "IndexAccess",
                                "src": "9534:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_User_$7040_storage",
                                  "typeString": "struct FeSwapSimu.User storage ref"
                                }
                              },
                              "id": 8122,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "liquityBA",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7037,
                              "src": "9534:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "9520:37:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "4e6f2073756368204c6971756964697479",
                            "id": 8124,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "9559:19:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_55c3503345e6f73579856d31e8d6692c64219a58d0fc202b0ab2c4d967cf9e27",
                              "typeString": "literal_string \"No such Liquidity\""
                            },
                            "value": "No such Liquidity"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_55c3503345e6f73579856d31e8d6692c64219a58d0fc202b0ab2c4d967cf9e27",
                              "typeString": "literal_string \"No such Liquidity\""
                            }
                          ],
                          "id": 8117,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "9512:7:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8125,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9512:67:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8126,
                      "nodeType": "ExpressionStatement",
                      "src": "9512:67:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 8127,
                          "name": "mineFeeBA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 7355,
                          "src": "9600:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                            "typeString": "function ()"
                          }
                        },
                        "id": 8128,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "9600:11:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8129,
                      "nodeType": "ExpressionStatement",
                      "src": "9600:11:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8139,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8130,
                          "name": "nRemoveA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8113,
                          "src": "9632:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8138,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8133,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "9658:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8134,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7008,
                                "src": "9658:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8131,
                                "name": "nLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8110,
                                "src": "9643:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6987,
                              "src": "9643:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8135,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9643:28:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8136,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7046,
                              "src": "9674:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                "typeString": "struct FeSwapSimu.Pool storage ref"
                              }
                            },
                            "id": 8137,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "LiquityBA",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7014,
                            "src": "9674:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9643:45:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9632:56:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8140,
                      "nodeType": "ExpressionStatement",
                      "src": "9632:56:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8150,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8141,
                          "name": "nRemoveB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8115,
                          "src": "9699:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8149,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8144,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "9725:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8145,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountBB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7010,
                                "src": "9725:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8142,
                                "name": "nLiquidity",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8110,
                                "src": "9710:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8143,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6987,
                              "src": "9710:14:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8146,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "9710:29:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8147,
                              "name": "pool",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7046,
                              "src": "9742:4:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                "typeString": "struct FeSwapSimu.Pool storage ref"
                              }
                            },
                            "id": 8148,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "LiquityBA",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 7014,
                            "src": "9742:14:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "9710:46:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9699:57:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8151,
                      "nodeType": "ExpressionStatement",
                      "src": "9699:57:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8157,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8152,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "9777:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8154,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8153,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8108,
                              "src": "9783:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9777:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8155,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "liquityBA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7037,
                          "src": "9777:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8156,
                          "name": "nLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8110,
                          "src": "9804:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9777:37:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8158,
                      "nodeType": "ExpressionStatement",
                      "src": "9777:37:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8163,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8159,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "9825:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8161,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "LiquityBA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7014,
                          "src": "9825:14:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8162,
                          "name": "nLiquidity",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8110,
                          "src": "9843:10:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9825:28:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8164,
                      "nodeType": "ExpressionStatement",
                      "src": "9825:28:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8170,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8165,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "9874:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8167,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8166,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8108,
                              "src": "9880:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9874:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8168,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "9874:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8169,
                          "name": "nRemoveA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8113,
                          "src": "9899:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9874:33:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8171,
                      "nodeType": "ExpressionStatement",
                      "src": "9874:33:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8177,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8172,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "9918:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8174,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8173,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8108,
                              "src": "9924:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "9918:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8175,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "9918:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8176,
                          "name": "nRemoveB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8115,
                          "src": "9943:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9918:33:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8178,
                      "nodeType": "ExpressionStatement",
                      "src": "9918:33:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8183,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8179,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "9964:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8181,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7008,
                          "src": "9964:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8182,
                          "name": "nRemoveA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8113,
                          "src": "9980:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9964:24:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8184,
                      "nodeType": "ExpressionStatement",
                      "src": "9964:24:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8189,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8185,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "9999:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8187,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountBB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7010,
                          "src": "9999:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8188,
                          "name": "nRemoveB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8115,
                          "src": "10016:8:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "9999:25:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8190,
                      "nodeType": "ExpressionStatement",
                      "src": "9999:25:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8201,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8191,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "10036:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8193,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "KLastBA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7018,
                          "src": "10036:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8199,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8195,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "10056:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8196,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7008,
                                "src": "10056:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8197,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "10071:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8198,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "AmountBB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7010,
                                "src": "10071:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "10056:28:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "id": 8194,
                            "name": "sqrt",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8630,
                            "src": "10051:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$returns$_t_uint256_$",
                              "typeString": "function (uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8200,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "10051:34:20",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10036:49:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8202,
                      "nodeType": "ExpressionStatement",
                      "src": "10036:49:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "c2dc0b65",
                "id": 8204,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "removeLiquidityBA",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8111,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8108,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8204,
                      "src": "9423:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8107,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9423:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8110,
                      "mutability": "mutable",
                      "name": "nLiquidity",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8204,
                      "src": "9436:15:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8109,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9436:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9422:31:20"
                },
                "returnParameters": {
                  "id": 8116,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8113,
                      "mutability": "mutable",
                      "name": "nRemoveA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8204,
                      "src": "9471:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8112,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9471:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8115,
                      "mutability": "mutable",
                      "name": "nRemoveB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8204,
                      "src": "9486:13:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8114,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "9486:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "9469:31:20"
                },
                "scope": 8631,
                "src": "9396:701:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8276,
                  "nodeType": "Block",
                  "src": "10187:441:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8215,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8213,
                          "name": "nA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8208,
                          "src": "10198:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 8214,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10204:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "10198:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8216,
                      "nodeType": "ExpressionStatement",
                      "src": "10198:13:20"
                    },
                    {
                      "assignments": [
                        8218
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8218,
                          "mutability": "mutable",
                          "name": "amountInWithFee",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8276,
                          "src": "10232:20:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8217,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10232:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8223,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "393937",
                            "id": 8221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10262:3:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            },
                            "value": "997"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8219,
                            "name": "nA",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8208,
                            "src": "10255:2:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8220,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6987,
                          "src": "10255:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10255:11:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10232:34:20"
                    },
                    {
                      "assignments": [
                        8225
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8225,
                          "mutability": "mutable",
                          "name": "numerator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8276,
                          "src": "10277:14:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8224,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10277:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8231,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8228,
                              "name": "poolUni",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7048,
                              "src": "10314:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                "typeString": "struct FeSwapSimu.PoolUni storage ref"
                              }
                            },
                            "id": 8229,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "AmountB",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6995,
                            "src": "10314:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8226,
                            "name": "amountInWithFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8218,
                            "src": "10294:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8227,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6987,
                          "src": "10294:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8230,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10294:36:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10277:53:20"
                    },
                    {
                      "assignments": [
                        8233
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8233,
                          "mutability": "mutable",
                          "name": "denominator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8276,
                          "src": "10341:16:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8232,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10341:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8243,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8241,
                            "name": "amountInWithFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8218,
                            "src": "10392:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 8238,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10382:4:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8234,
                                      "name": "poolUni",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7048,
                                      "src": "10361:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                        "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                      }
                                    },
                                    "id": 8235,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "AmountA",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6993,
                                    "src": "10361:15:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 8236,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10360:17:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8237,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6987,
                              "src": "10360:21:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8239,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10360:27:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8240,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6937,
                          "src": "10360:31:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8242,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10360:48:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10341:67:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8248,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8244,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8211,
                          "src": "10419:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8247,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 8245,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8225,
                            "src": "10427:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 8246,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8233,
                            "src": "10439:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10427:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10419:31:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8249,
                      "nodeType": "ExpressionStatement",
                      "src": "10419:31:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8254,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8250,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "10463:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 8252,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6993,
                          "src": "10463:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8253,
                          "name": "nA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8208,
                          "src": "10482:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10463:21:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8255,
                      "nodeType": "ExpressionStatement",
                      "src": "10463:21:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8260,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8256,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "10495:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 8258,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6995,
                          "src": "10495:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8259,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8211,
                          "src": "10514:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10495:24:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8261,
                      "nodeType": "ExpressionStatement",
                      "src": "10495:24:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8267,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8262,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "10544:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8264,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8263,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8206,
                              "src": "10550:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10544:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8265,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "10544:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8266,
                          "name": "nA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8208,
                          "src": "10569:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10544:27:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8268,
                      "nodeType": "ExpressionStatement",
                      "src": "10544:27:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8274,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8269,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "10582:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8271,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8270,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8206,
                              "src": "10588:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "10582:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8272,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "10582:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8273,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8211,
                          "src": "10607:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10582:30:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8275,
                      "nodeType": "ExpressionStatement",
                      "src": "10582:30:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "46c91362",
                "id": 8277,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "SwapABUni",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8209,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8206,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8277,
                      "src": "10134:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8205,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10134:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8208,
                      "mutability": "mutable",
                      "name": "nA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8277,
                      "src": "10147:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8207,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10147:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10133:23:20"
                },
                "returnParameters": {
                  "id": 8212,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8211,
                      "mutability": "mutable",
                      "name": "nOutB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8277,
                      "src": "10174:10:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8210,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10174:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10172:14:20"
                },
                "scope": 8631,
                "src": "10114:514:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8349,
                  "nodeType": "Block",
                  "src": "10713:437:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8288,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8286,
                          "name": "nB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8281,
                          "src": "10724:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 8287,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "10730:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "10724:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8289,
                      "nodeType": "ExpressionStatement",
                      "src": "10724:13:20"
                    },
                    {
                      "assignments": [
                        8291
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8291,
                          "mutability": "mutable",
                          "name": "amountInWithFee",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8349,
                          "src": "10758:20:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8290,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10758:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8296,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "hexValue": "393937",
                            "id": 8294,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "10788:3:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            },
                            "value": "997"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_rational_997_by_1",
                              "typeString": "int_const 997"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8292,
                            "name": "nB",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8281,
                            "src": "10781:2:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8293,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6987,
                          "src": "10781:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8295,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10781:11:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10758:34:20"
                    },
                    {
                      "assignments": [
                        8298
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8298,
                          "mutability": "mutable",
                          "name": "numerator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8349,
                          "src": "10803:14:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8297,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10803:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8304,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8301,
                              "name": "poolUni",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7048,
                              "src": "10840:7:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                "typeString": "struct FeSwapSimu.PoolUni storage ref"
                              }
                            },
                            "id": 8302,
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "AmountA",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6993,
                            "src": "10840:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8299,
                            "name": "amountInWithFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8291,
                            "src": "10820:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8300,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "mul",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6987,
                          "src": "10820:19:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8303,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10820:36:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10803:53:20"
                    },
                    {
                      "assignments": [
                        8306
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8306,
                          "mutability": "mutable",
                          "name": "denominator",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8349,
                          "src": "10867:16:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8305,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "10867:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8316,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8314,
                            "name": "amountInWithFee",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8291,
                            "src": "10918:15:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 8311,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "10908:4:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "expression": {
                                      "argumentTypes": null,
                                      "id": 8307,
                                      "name": "poolUni",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 7048,
                                      "src": "10887:7:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                                        "typeString": "struct FeSwapSimu.PoolUni storage ref"
                                      }
                                    },
                                    "id": 8308,
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "memberName": "AmountB",
                                    "nodeType": "MemberAccess",
                                    "referencedDeclaration": 6995,
                                    "src": "10887:15:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 8309,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "10886:17:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8310,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "mul",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 6987,
                              "src": "10886:21:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                "typeString": "function (uint256,uint256) pure returns (uint256)"
                              }
                            },
                            "id": 8312,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "10886:27:20",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8313,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "add",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6937,
                          "src": "10886:31:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8315,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "10886:48:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "10867:67:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8321,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8317,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8284,
                          "src": "10945:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8320,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 8318,
                            "name": "numerator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8298,
                            "src": "10953:9:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 8319,
                            "name": "denominator",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8306,
                            "src": "10965:11:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "10953:23:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10945:31:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8322,
                      "nodeType": "ExpressionStatement",
                      "src": "10945:31:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8327,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8323,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "10997:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 8325,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6995,
                          "src": "10997:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8326,
                          "name": "nB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8281,
                          "src": "11016:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "10997:21:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8328,
                      "nodeType": "ExpressionStatement",
                      "src": "10997:21:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8333,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8329,
                            "name": "poolUni",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7048,
                            "src": "11029:7:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_PoolUni_$7002_storage",
                              "typeString": "struct FeSwapSimu.PoolUni storage ref"
                            }
                          },
                          "id": 8331,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6993,
                          "src": "11029:15:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8332,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8284,
                          "src": "11048:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11029:24:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8334,
                      "nodeType": "ExpressionStatement",
                      "src": "11029:24:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8340,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8335,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "11074:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8337,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8336,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8279,
                              "src": "11080:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11074:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8338,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "11074:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8339,
                          "name": "nB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8281,
                          "src": "11099:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11074:27:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8341,
                      "nodeType": "ExpressionStatement",
                      "src": "11074:27:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8347,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8342,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "11112:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8344,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8343,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8279,
                              "src": "11118:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11112:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8345,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "11112:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8346,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8284,
                          "src": "11137:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11112:30:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8348,
                      "nodeType": "ExpressionStatement",
                      "src": "11112:30:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "ef31c6b7",
                "id": 8350,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "SwapBAUni",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8282,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8279,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8350,
                      "src": "10660:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8278,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10660:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8281,
                      "mutability": "mutable",
                      "name": "nB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8350,
                      "src": "10673:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8280,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10673:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10659:23:20"
                },
                "returnParameters": {
                  "id": 8285,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8284,
                      "mutability": "mutable",
                      "name": "nOutA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8350,
                      "src": "10700:10:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8283,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "10700:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "10698:14:20"
                },
                "scope": 8631,
                "src": "10640:510:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8405,
                  "nodeType": "Block",
                  "src": "11232:276:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8361,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8359,
                          "name": "nA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8354,
                          "src": "11243:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 8360,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11249:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "11243:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8362,
                      "nodeType": "ExpressionStatement",
                      "src": "11243:13:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 8363,
                          "name": "arbitrage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8557,
                          "src": "11267:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                            "typeString": "function ()"
                          }
                        },
                        "id": 8364,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11267:11:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8365,
                      "nodeType": "ExpressionStatement",
                      "src": "11267:11:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8377,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8366,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8357,
                          "src": "11289:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8376,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8370,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8367,
                              "name": "nA",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8354,
                              "src": "11297:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8368,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7046,
                                "src": "11302:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                  "typeString": "struct FeSwapSimu.Pool storage ref"
                                }
                              },
                              "id": 8369,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AmountB",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7006,
                              "src": "11302:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11297:17:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8374,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8371,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "11318:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 8372,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "AmountAA",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7004,
                                  "src": "11318:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 8373,
                                  "name": "nA",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8354,
                                  "src": "11334:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11318:18:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8375,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "11317:20:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11297:40:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11289:48:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8378,
                      "nodeType": "ExpressionStatement",
                      "src": "11289:48:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8383,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8379,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "11348:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8381,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountAA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7004,
                          "src": "11348:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8382,
                          "name": "nA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8354,
                          "src": "11365:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11348:19:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8384,
                      "nodeType": "ExpressionStatement",
                      "src": "11348:19:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8389,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8385,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "11378:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8387,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7006,
                          "src": "11378:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8388,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8357,
                          "src": "11394:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11378:21:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8390,
                      "nodeType": "ExpressionStatement",
                      "src": "11378:21:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8396,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8391,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "11424:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8393,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8392,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8352,
                              "src": "11430:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11424:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8394,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "11424:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8395,
                          "name": "nA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8354,
                          "src": "11449:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11424:27:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8397,
                      "nodeType": "ExpressionStatement",
                      "src": "11424:27:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8403,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8398,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "11462:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8400,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8399,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8352,
                              "src": "11468:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11462:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8401,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "11462:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8402,
                          "name": "nOutB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8357,
                          "src": "11487:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11462:30:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8404,
                      "nodeType": "ExpressionStatement",
                      "src": "11462:30:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "716445a8",
                "id": 8406,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "SwapAB",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8355,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8352,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8406,
                      "src": "11179:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8351,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11179:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8354,
                      "mutability": "mutable",
                      "name": "nA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8406,
                      "src": "11192:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8353,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11192:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11178:23:20"
                },
                "returnParameters": {
                  "id": 8358,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8357,
                      "mutability": "mutable",
                      "name": "nOutB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8406,
                      "src": "11219:10:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8356,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11219:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11217:14:20"
                },
                "scope": 8631,
                "src": "11162:346:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8461,
                  "nodeType": "Block",
                  "src": "11590:273:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8415,
                          "name": "nB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8410,
                          "src": "11601:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "*=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "hexValue": "31",
                          "id": 8416,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "11607:7:20",
                          "subdenomination": "ether",
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_1000000000000000000_by_1",
                            "typeString": "int_const 1000000000000000000"
                          },
                          "value": "1"
                        },
                        "src": "11601:13:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8418,
                      "nodeType": "ExpressionStatement",
                      "src": "11601:13:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [],
                        "expression": {
                          "argumentTypes": [],
                          "id": 8419,
                          "name": "arbitrage",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8557,
                          "src": "11625:9:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$__$returns$__$",
                            "typeString": "function ()"
                          }
                        },
                        "id": 8420,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "11625:11:20",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8421,
                      "nodeType": "ExpressionStatement",
                      "src": "11625:11:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8433,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8422,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8413,
                          "src": "11647:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8432,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8426,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8423,
                              "name": "nB",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8410,
                              "src": "11655:2:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "*",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8424,
                                "name": "pool",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 7046,
                                "src": "11660:4:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                  "typeString": "struct FeSwapSimu.Pool storage ref"
                                }
                              },
                              "id": 8425,
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "AmountA",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": 7008,
                              "src": "11660:12:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "11655:17:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "/",
                          "rightExpression": {
                            "argumentTypes": null,
                            "components": [
                              {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8430,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8427,
                                    "name": "pool",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 7046,
                                    "src": "11676:4:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                      "typeString": "struct FeSwapSimu.Pool storage ref"
                                    }
                                  },
                                  "id": 8428,
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "AmountBB",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 7010,
                                  "src": "11676:13:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "+",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "id": 8429,
                                  "name": "nB",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8410,
                                  "src": "11692:2:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "src": "11676:18:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "id": 8431,
                            "isConstant": false,
                            "isInlineArray": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "TupleExpression",
                            "src": "11675:20:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "11655:40:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11647:48:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8434,
                      "nodeType": "ExpressionStatement",
                      "src": "11647:48:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8439,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8435,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "11708:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8437,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountBB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7010,
                          "src": "11708:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8438,
                          "name": "nB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8410,
                          "src": "11725:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11708:19:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8440,
                      "nodeType": "ExpressionStatement",
                      "src": "11708:19:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8445,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8441,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "11738:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8443,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "AmountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7008,
                          "src": "11738:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8444,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8413,
                          "src": "11754:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11738:21:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8446,
                      "nodeType": "ExpressionStatement",
                      "src": "11738:21:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8452,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8447,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "11784:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8449,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8448,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8408,
                              "src": "11790:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11784:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8450,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7033,
                          "src": "11784:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8451,
                          "name": "nB",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8410,
                          "src": "11809:2:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11784:27:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8453,
                      "nodeType": "ExpressionStatement",
                      "src": "11784:27:20"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8459,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8454,
                              "name": "users",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 7044,
                              "src": "11822:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_struct$_User_$7040_storage_$25_storage",
                                "typeString": "struct FeSwapSimu.User storage ref[25] storage ref"
                              }
                            },
                            "id": 8456,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8455,
                              "name": "userID",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8408,
                              "src": "11828:6:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "11822:13:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_User_$7040_storage",
                              "typeString": "struct FeSwapSimu.User storage ref"
                            }
                          },
                          "id": 8457,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "memberName": "amountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7031,
                          "src": "11822:21:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8458,
                          "name": "nOutA",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8413,
                          "src": "11847:5:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11822:30:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8460,
                      "nodeType": "ExpressionStatement",
                      "src": "11822:30:20"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "cc0478f4",
                "id": 8462,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "SwapBA",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8411,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8408,
                      "mutability": "mutable",
                      "name": "userID",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8462,
                      "src": "11537:11:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8407,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11537:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8410,
                      "mutability": "mutable",
                      "name": "nB",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8462,
                      "src": "11550:7:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8409,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11550:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11536:23:20"
                },
                "returnParameters": {
                  "id": 8414,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8413,
                      "mutability": "mutable",
                      "name": "nOutA",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8462,
                      "src": "11577:10:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8412,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "11577:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "11575:14:20"
                },
                "scope": 8631,
                "src": "11520:343:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8556,
                  "nodeType": "Block",
                  "src": "11903:605:20",
                  "statements": [
                    {
                      "assignments": [
                        8466
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8466,
                          "mutability": "mutable",
                          "name": "productIn",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8556,
                          "src": "11914:14:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8465,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "11914:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8472,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8471,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8467,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "11931:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8468,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AmountAA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7004,
                          "src": "11931:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8469,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "11947:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8470,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AmountBB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7010,
                          "src": "11947:13:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11931:29:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11914:46:20"
                    },
                    {
                      "assignments": [
                        8474
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8474,
                          "mutability": "mutable",
                          "name": "productOut",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8556,
                          "src": "11971:15:20",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8473,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "11971:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8480,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8479,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8475,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "11988:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8476,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AmountA",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7008,
                          "src": "11988:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "*",
                        "rightExpression": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 8477,
                            "name": "pool",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 7046,
                            "src": "12003:4:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_struct$_Pool_$7029_storage",
                              "typeString": "struct FeSwapSimu.Pool storage ref"
                            }
                          },
                          "id": 8478,
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "AmountB",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 7006,
                          "src": "12003:12:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "11988:27:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "11971:44:20"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8489,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8483,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8481,
                                "name": "productIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8466,
                                "src": "12031:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31303030",
                                "id": 8482,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12042:4:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1000_by_1",
                                  "typeString": "int_const 1000"
                                },
                                "value": "1000"
                              },
                              "src": "12031:15:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8484,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "12030:17:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "components": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8487,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8485,
                                "name": "productOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8474,
                                "src": "12052:10:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "*",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31303130",
                                "id": 8486,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12064:4:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1010_by_1",
                                  "typeString": "int_const 1010"
                                },
                                "value": "1010"
                              },
                              "src": "12052:16:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "id": 8488,
                          "isConstant": false,
                          "isInlineArray": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "TupleExpression",
                          "src": "12051:18:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12030:39:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 8555,
                      "nodeType": "IfStatement",
                      "src": "12026:475:20",
                      "trueBody": {
                        "id": 8554,
                        "nodeType": "Block",
                        "src": "12071:430:20",
                        "statements": [
                          {
                            "assignments": [
                              8491
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8491,
                                "mutability": "mutable",
                                "name": "exchangeA",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 8554,
                                "src": "12086:14:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8490,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12086:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 8506,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8505,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8494,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 8492,
                                      "name": "productIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8466,
                                      "src": "12104:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 8493,
                                      "name": "productOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8474,
                                      "src": "12116:10:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12104:22:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 8495,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "12103:24:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8503,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 8496,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12132:1:20",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 8501,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8497,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7046,
                                              "src": "12136:4:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                                "typeString": "struct FeSwapSimu.Pool storage ref"
                                              }
                                            },
                                            "id": 8498,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "AmountB",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7006,
                                            "src": "12136:12:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8499,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7046,
                                              "src": "12152:4:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                                "typeString": "struct FeSwapSimu.Pool storage ref"
                                              }
                                            },
                                            "id": 8500,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "AmountBB",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7010,
                                            "src": "12152:13:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "12136:29:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 8502,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "12135:31:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12132:34:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 8504,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "12130:38:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12103:65:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12086:82:20"
                          },
                          {
                            "assignments": [
                              8508
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8508,
                                "mutability": "mutable",
                                "name": "exchangeB",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 8554,
                                "src": "12197:14:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8507,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12197:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 8523,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8522,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8511,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "id": 8509,
                                      "name": "productIn",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8466,
                                      "src": "12215:9:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "-",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "id": 8510,
                                      "name": "productOut",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8474,
                                      "src": "12227:10:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12215:22:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 8512,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "12214:24:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "/",
                              "rightExpression": {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "commonType": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    },
                                    "id": 8520,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftExpression": {
                                      "argumentTypes": null,
                                      "hexValue": "32",
                                      "id": 8513,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "number",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "12243:1:20",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_rational_2_by_1",
                                        "typeString": "int_const 2"
                                      },
                                      "value": "2"
                                    },
                                    "nodeType": "BinaryOperation",
                                    "operator": "*",
                                    "rightExpression": {
                                      "argumentTypes": null,
                                      "components": [
                                        {
                                          "argumentTypes": null,
                                          "commonType": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          },
                                          "id": 8518,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": false,
                                          "lValueRequested": false,
                                          "leftExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8514,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7046,
                                              "src": "12247:4:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                                "typeString": "struct FeSwapSimu.Pool storage ref"
                                              }
                                            },
                                            "id": 8515,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "AmountA",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7008,
                                            "src": "12247:12:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "nodeType": "BinaryOperation",
                                          "operator": "+",
                                          "rightExpression": {
                                            "argumentTypes": null,
                                            "expression": {
                                              "argumentTypes": null,
                                              "id": 8516,
                                              "name": "pool",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 7046,
                                              "src": "12263:4:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                                "typeString": "struct FeSwapSimu.Pool storage ref"
                                              }
                                            },
                                            "id": 8517,
                                            "isConstant": false,
                                            "isLValue": true,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "memberName": "AmountAA",
                                            "nodeType": "MemberAccess",
                                            "referencedDeclaration": 7004,
                                            "src": "12263:13:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          },
                                          "src": "12247:29:20",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        }
                                      ],
                                      "id": 8519,
                                      "isConstant": false,
                                      "isInlineArray": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "TupleExpression",
                                      "src": "12246:31:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12243:34:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "id": 8521,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "12241:38:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12214:65:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12197:82:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8528,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8524,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "12303:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8526,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "AmountAA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7004,
                                "src": "12303:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 8527,
                                "name": "exchangeA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8491,
                                "src": "12320:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12303:26:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8529,
                            "nodeType": "ExpressionStatement",
                            "src": "12303:26:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8534,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8530,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "12344:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8532,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "AmountA",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7008,
                                "src": "12344:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 8533,
                                "name": "exchangeA",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8491,
                                "src": "12360:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12344:25:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8535,
                            "nodeType": "ExpressionStatement",
                            "src": "12344:25:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8540,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8536,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "12385:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8538,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "AmountBB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7010,
                                "src": "12385:13:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 8539,
                                "name": "exchangeB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8508,
                                "src": "12402:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12385:26:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8541,
                            "nodeType": "ExpressionStatement",
                            "src": "12385:26:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8546,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8542,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "12426:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8544,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "AmountB",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7006,
                                "src": "12426:12:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 8545,
                                "name": "exchangeB",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8508,
                                "src": "12442:9:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12426:25:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8547,
                            "nodeType": "ExpressionStatement",
                            "src": "12426:25:20"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8552,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8548,
                                  "name": "pool",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 7046,
                                  "src": "12466:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_struct$_Pool_$7029_storage",
                                    "typeString": "struct FeSwapSimu.Pool storage ref"
                                  }
                                },
                                "id": 8550,
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "memberName": "arbitrageTime",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 7028,
                                "src": "12466:18:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "+=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 8551,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12488:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "12466:23:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8553,
                            "nodeType": "ExpressionStatement",
                            "src": "12466:23:20"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "69c8d338",
                "id": 8557,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "arbitrage",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8463,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "11893:2:20"
                },
                "returnParameters": {
                  "id": 8464,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "11903:0:20"
                },
                "scope": 8631,
                "src": "11875:633:20",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8575,
                  "nodeType": "Block",
                  "src": "12583:36:20",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8573,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8566,
                          "name": "z",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8564,
                          "src": "12594:1:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "condition": {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8567,
                              "name": "x",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8559,
                              "src": "12598:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "<",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 8568,
                              "name": "y",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8561,
                              "src": "12602:1:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "12598:5:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "falseExpression": {
                            "argumentTypes": null,
                            "id": 8571,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8561,
                            "src": "12610:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8572,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "Conditional",
                          "src": "12598:13:20",
                          "trueExpression": {
                            "argumentTypes": null,
                            "id": 8570,
                            "name": "x",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8559,
                            "src": "12606:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "12594:17:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8574,
                      "nodeType": "ExpressionStatement",
                      "src": "12594:17:20"
                    }
                  ]
                },
                "documentation": null,
                "id": 8576,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "min",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8562,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8559,
                      "mutability": "mutable",
                      "name": "x",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8576,
                      "src": "12536:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8558,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12536:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8561,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8576,
                      "src": "12544:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8560,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12544:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12535:16:20"
                },
                "returnParameters": {
                  "id": 8565,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8564,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8576,
                      "src": "12575:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8563,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12575:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12574:8:20"
                },
                "scope": 8631,
                "src": "12523:96:20",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8629,
                  "nodeType": "Block",
                  "src": "12790:250:20",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8585,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8583,
                          "name": "y",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8578,
                          "src": "12805:1:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": ">",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "33",
                          "id": 8584,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "12809:1:20",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_3_by_1",
                            "typeString": "int_const 3"
                          },
                          "value": "3"
                        },
                        "src": "12805:5:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 8621,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 8619,
                            "name": "y",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8578,
                            "src": "12993:1:20",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "hexValue": "30",
                            "id": 8620,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "number",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "12998:1:20",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_rational_0_by_1",
                              "typeString": "int_const 0"
                            },
                            "value": "0"
                          },
                          "src": "12993:6:20",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 8627,
                        "nodeType": "IfStatement",
                        "src": "12989:44:20",
                        "trueBody": {
                          "id": 8626,
                          "nodeType": "Block",
                          "src": "13001:32:20",
                          "statements": [
                            {
                              "expression": {
                                "argumentTypes": null,
                                "id": 8624,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftHandSide": {
                                  "argumentTypes": null,
                                  "id": 8622,
                                  "name": "z",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8581,
                                  "src": "13016:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "Assignment",
                                "operator": "=",
                                "rightHandSide": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 8623,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "13020:1:20",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "src": "13016:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "id": 8625,
                              "nodeType": "ExpressionStatement",
                              "src": "13016:5:20"
                            }
                          ]
                        }
                      },
                      "id": 8628,
                      "nodeType": "IfStatement",
                      "src": "12801:232:20",
                      "trueBody": {
                        "id": 8618,
                        "nodeType": "Block",
                        "src": "12812:171:20",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8588,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "id": 8586,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8581,
                                "src": "12827:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 8587,
                                "name": "y",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8578,
                                "src": "12831:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12827:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8589,
                            "nodeType": "ExpressionStatement",
                            "src": "12827:5:20"
                          },
                          {
                            "assignments": [
                              8591
                            ],
                            "declarations": [
                              {
                                "constant": false,
                                "id": 8591,
                                "mutability": "mutable",
                                "name": "x",
                                "nodeType": "VariableDeclaration",
                                "overrides": null,
                                "scope": 8618,
                                "src": "12847:6:20",
                                "stateVariable": false,
                                "storageLocation": "default",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "typeName": {
                                  "id": 8590,
                                  "name": "uint",
                                  "nodeType": "ElementaryTypeName",
                                  "src": "12847:4:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "value": null,
                                "visibility": "internal"
                              }
                            ],
                            "id": 8597,
                            "initialValue": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8596,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "commonType": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                "id": 8594,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "leftExpression": {
                                  "argumentTypes": null,
                                  "id": 8592,
                                  "name": "y",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8578,
                                  "src": "12856:1:20",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                "nodeType": "BinaryOperation",
                                "operator": "/",
                                "rightExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "32",
                                  "id": 8593,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "12860:1:20",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_2_by_1",
                                    "typeString": "int_const 2"
                                  },
                                  "value": "2"
                                },
                                "src": "12856:5:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "+",
                              "rightExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 8595,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "12864:1:20",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "src": "12856:9:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "VariableDeclarationStatement",
                            "src": "12847:18:20"
                          },
                          {
                            "body": {
                              "id": 8616,
                              "nodeType": "Block",
                              "src": "12894:78:20",
                              "statements": [
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8603,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 8601,
                                      "name": "z",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8581,
                                      "src": "12913:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "id": 8602,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8591,
                                      "src": "12917:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12913:5:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8604,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12913:5:20"
                                },
                                {
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8614,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "leftHandSide": {
                                      "argumentTypes": null,
                                      "id": 8605,
                                      "name": "x",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 8591,
                                      "src": "12937:1:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "nodeType": "Assignment",
                                    "operator": "=",
                                    "rightHandSide": {
                                      "argumentTypes": null,
                                      "commonType": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      },
                                      "id": 8613,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "leftExpression": {
                                        "argumentTypes": null,
                                        "components": [
                                          {
                                            "argumentTypes": null,
                                            "commonType": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            },
                                            "id": 8610,
                                            "isConstant": false,
                                            "isLValue": false,
                                            "isPure": false,
                                            "lValueRequested": false,
                                            "leftExpression": {
                                              "argumentTypes": null,
                                              "commonType": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              },
                                              "id": 8608,
                                              "isConstant": false,
                                              "isLValue": false,
                                              "isPure": false,
                                              "lValueRequested": false,
                                              "leftExpression": {
                                                "argumentTypes": null,
                                                "id": 8606,
                                                "name": "y",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8578,
                                                "src": "12942:1:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "nodeType": "BinaryOperation",
                                              "operator": "/",
                                              "rightExpression": {
                                                "argumentTypes": null,
                                                "id": 8607,
                                                "name": "x",
                                                "nodeType": "Identifier",
                                                "overloadedDeclarations": [],
                                                "referencedDeclaration": 8591,
                                                "src": "12946:1:20",
                                                "typeDescriptions": {
                                                  "typeIdentifier": "t_uint256",
                                                  "typeString": "uint256"
                                                }
                                              },
                                              "src": "12942:5:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "nodeType": "BinaryOperation",
                                            "operator": "+",
                                            "rightExpression": {
                                              "argumentTypes": null,
                                              "id": 8609,
                                              "name": "x",
                                              "nodeType": "Identifier",
                                              "overloadedDeclarations": [],
                                              "referencedDeclaration": 8591,
                                              "src": "12950:1:20",
                                              "typeDescriptions": {
                                                "typeIdentifier": "t_uint256",
                                                "typeString": "uint256"
                                              }
                                            },
                                            "src": "12942:9:20",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_uint256",
                                              "typeString": "uint256"
                                            }
                                          }
                                        ],
                                        "id": 8611,
                                        "isConstant": false,
                                        "isInlineArray": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "TupleExpression",
                                        "src": "12941:11:20",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      "nodeType": "BinaryOperation",
                                      "operator": "/",
                                      "rightExpression": {
                                        "argumentTypes": null,
                                        "hexValue": "32",
                                        "id": 8612,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "kind": "number",
                                        "lValueRequested": false,
                                        "nodeType": "Literal",
                                        "src": "12955:1:20",
                                        "subdenomination": null,
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_rational_2_by_1",
                                          "typeString": "int_const 2"
                                        },
                                        "value": "2"
                                      },
                                      "src": "12941:15:20",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_uint256",
                                        "typeString": "uint256"
                                      }
                                    },
                                    "src": "12937:19:20",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8615,
                                  "nodeType": "ExpressionStatement",
                                  "src": "12937:19:20"
                                }
                              ]
                            },
                            "condition": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              "id": 8600,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 8598,
                                "name": "x",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8591,
                                "src": "12887:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "<",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 8599,
                                "name": "z",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8581,
                                "src": "12891:1:20",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "12887:5:20",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "id": 8617,
                            "nodeType": "WhileStatement",
                            "src": "12880:92:20"
                          }
                        ]
                      }
                    }
                  ]
                },
                "documentation": null,
                "id": 8630,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "sqrt",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8579,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8578,
                      "mutability": "mutable",
                      "name": "y",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8630,
                      "src": "12751:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8577,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12751:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12750:8:20"
                },
                "returnParameters": {
                  "id": 8582,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8581,
                      "mutability": "mutable",
                      "name": "z",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8630,
                      "src": "12782:6:20",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8580,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "12782:4:20",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "12781:8:20"
                },
                "scope": 8631,
                "src": "12737:303:20",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "internal"
              }
            ],
            "scope": 8632,
            "src": "511:12532:20"
          }
        ],
        "src": "37:13008:20"
      }
    },
    "contracts/test/DeflatingERC20.sol": {
      "id": 21,
      "AST": {
        "absolutePath": "contracts/test/DeflatingERC20.sol",
        "exportedSymbols": {
          "DeflatingERC20": [
            9046
          ]
        },
        "id": 9047,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 8633,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:21"
          },
          {
            "absolutePath": "contracts/libraries/SafeMath.sol",
            "file": "../libraries/SafeMath.sol",
            "id": 8634,
            "nodeType": "ImportDirective",
            "scope": 9047,
            "sourceUnit": 6710,
            "src": "65:35:21",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9046,
            "linearizedBaseContracts": [
              9046
            ],
            "name": "DeflatingERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "id": 8637,
                "libraryName": {
                  "contractScope": null,
                  "id": 8635,
                  "name": "SafeMath",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 6709,
                  "src": "141:8:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_SafeMath_$6709",
                    "typeString": "library SafeMath"
                  }
                },
                "nodeType": "UsingForDirective",
                "src": "135:24:21",
                "typeName": {
                  "id": 8636,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "154:4:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                }
              },
              {
                "constant": true,
                "functionSelector": "06fdde03",
                "id": 8640,
                "mutability": "constant",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9046,
                "src": "167:52:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 8638,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "167:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "4465666c6174696e67205465737420546f6b656e",
                  "id": 8639,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "197:22:21",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_f89e31130e6fd3d87d62a1ac2770fba58bed5a06c47ce70fa97f8218b1b2743a",
                    "typeString": "literal_string \"Deflating Test Token\""
                  },
                  "value": "Deflating Test Token"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "95d89b41",
                "id": 8643,
                "mutability": "constant",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9046,
                "src": "226:37:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_memory_ptr",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 8641,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "226:6:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "445454",
                  "id": 8642,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "258:5:21",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_0862d7701ae2a04548299440d8e9bcde598aaa04f40d2b263697efe0cc6c0bb4",
                    "typeString": "literal_string \"DTT\""
                  },
                  "value": "DTT"
                },
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "313ce567",
                "id": 8646,
                "mutability": "constant",
                "name": "decimals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9046,
                "src": "270:35:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 8644,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "270:5:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3138",
                  "id": 8645,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "303:2:21",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_18_by_1",
                    "typeString": "int_const 18"
                  },
                  "value": "18"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "18160ddd",
                "id": 8648,
                "mutability": "mutable",
                "name": "totalSupply",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9046,
                "src": "312:24:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint256",
                  "typeString": "uint256"
                },
                "typeName": {
                  "id": 8647,
                  "name": "uint",
                  "nodeType": "ElementaryTypeName",
                  "src": "312:4:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint256",
                    "typeString": "uint256"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "70a08231",
                "id": 8652,
                "mutability": "mutable",
                "name": "balanceOf",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9046,
                "src": "343:41:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 8651,
                  "keyType": {
                    "id": 8649,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "351:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "343:24:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 8650,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "362:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "dd62ed3e",
                "id": 8658,
                "mutability": "mutable",
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9046,
                "src": "391:61:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                  "typeString": "mapping(address => mapping(address => uint256))"
                },
                "typeName": {
                  "id": 8657,
                  "keyType": {
                    "id": 8653,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "399:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "391:44:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "valueType": {
                    "id": 8656,
                    "keyType": {
                      "id": 8654,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "418:7:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "410:24:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 8655,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "429:4:21",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "3644e515",
                "id": 8660,
                "mutability": "mutable",
                "name": "DOMAIN_SEPARATOR",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9046,
                "src": "461:31:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 8659,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "461:7:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": true,
                "functionSelector": "30adf81f",
                "id": 8663,
                "mutability": "constant",
                "name": "PERMIT_TYPEHASH",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9046,
                "src": "604:108:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_bytes32",
                  "typeString": "bytes32"
                },
                "typeName": {
                  "id": 8661,
                  "name": "bytes32",
                  "nodeType": "ElementaryTypeName",
                  "src": "604:7:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_bytes32",
                    "typeString": "bytes32"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "307836653731656461653132623162393766346431663630333730666566313031303566613266616165303132363131346131363963363438343564363132366339",
                  "id": 8662,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "646:66:21",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_49955707469362902507454157297736832118868343942642399513960811609542965143241_by_1",
                    "typeString": "int_const 4995...(69 digits omitted)...3241"
                  },
                  "value": "0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "7ecebe00",
                "id": 8667,
                "mutability": "mutable",
                "name": "nonces",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9046,
                "src": "719:38:21",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 8666,
                  "keyType": {
                    "id": 8664,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "727:7:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "719:24:21",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 8665,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "738:4:21",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8675,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8674,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8669,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8675,
                      "src": "781:21:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8668,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "781:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8671,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8675,
                      "src": "804:23:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8670,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "804:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8673,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8675,
                      "src": "829:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8672,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "829:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "780:60:21"
                },
                "src": "766:75:21"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 8683,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 8682,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8677,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8683,
                      "src": "862:20:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8676,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "862:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8679,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8683,
                      "src": "884:18:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8678,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "884:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8681,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8683,
                      "src": "904:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8680,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "904:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "861:54:21"
                },
                "src": "847:69:21"
              },
              {
                "body": {
                  "id": 8726,
                  "nodeType": "Block",
                  "src": "962:481:21",
                  "statements": [
                    {
                      "assignments": [
                        8689
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8689,
                          "mutability": "mutable",
                          "name": "chainId",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8726,
                          "src": "973:12:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8688,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "973:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8690,
                      "initialValue": null,
                      "nodeType": "VariableDeclarationStatement",
                      "src": "973:12:21"
                    },
                    {
                      "AST": {
                        "nodeType": "YulBlock",
                        "src": "1005:46:21",
                        "statements": [
                          {
                            "nodeType": "YulAssignment",
                            "src": "1020:20:21",
                            "value": {
                              "arguments": [],
                              "functionName": {
                                "name": "chainid",
                                "nodeType": "YulIdentifier",
                                "src": "1031:7:21"
                              },
                              "nodeType": "YulFunctionCall",
                              "src": "1031:9:21"
                            },
                            "variableNames": [
                              {
                                "name": "chainId",
                                "nodeType": "YulIdentifier",
                                "src": "1020:7:21"
                              }
                            ]
                          }
                        ]
                      },
                      "evmVersion": "istanbul",
                      "externalReferences": [
                        {
                          "declaration": 8689,
                          "isOffset": false,
                          "isSlot": false,
                          "src": "1020:7:21",
                          "valueSize": 1
                        }
                      ],
                      "id": 8691,
                      "nodeType": "InlineAssembly",
                      "src": "996:55:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8718,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8692,
                          "name": "DOMAIN_SEPARATOR",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8660,
                          "src": "1061:16:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "hexValue": "454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429",
                                      "id": 8697,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "string",
                                      "lValueRequested": false,
                                      "nodeType": "Literal",
                                      "src": "1143:84:21",
                                      "subdenomination": null,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      },
                                      "value": "EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_stringliteral_8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f",
                                        "typeString": "literal_string \"EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)\""
                                      }
                                    ],
                                    "id": 8696,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1133:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8698,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1133:95:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "id": 8702,
                                          "name": "name",
                                          "nodeType": "Identifier",
                                          "overloadedDeclarations": [],
                                          "referencedDeclaration": 8640,
                                          "src": "1263:4:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_string_memory_ptr",
                                            "typeString": "string memory"
                                          }
                                        ],
                                        "id": 8701,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1257:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 8700,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1257:5:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 8703,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1257:11:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 8699,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1247:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8704,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1247:22:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "arguments": [
                                        {
                                          "argumentTypes": null,
                                          "hexValue": "31",
                                          "id": 8708,
                                          "isConstant": false,
                                          "isLValue": false,
                                          "isPure": true,
                                          "kind": "string",
                                          "lValueRequested": false,
                                          "nodeType": "Literal",
                                          "src": "1304:3:21",
                                          "subdenomination": null,
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          },
                                          "value": "1"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": [
                                          {
                                            "typeIdentifier": "t_stringliteral_c89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6",
                                            "typeString": "literal_string \"1\""
                                          }
                                        ],
                                        "id": 8707,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": true,
                                        "lValueRequested": false,
                                        "nodeType": "ElementaryTypeNameExpression",
                                        "src": "1298:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_type$_t_bytes_storage_ptr_$",
                                          "typeString": "type(bytes storage pointer)"
                                        },
                                        "typeName": {
                                          "id": 8706,
                                          "name": "bytes",
                                          "nodeType": "ElementaryTypeName",
                                          "src": "1298:5:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": null,
                                            "typeString": null
                                          }
                                        }
                                      },
                                      "id": 8709,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "kind": "typeConversion",
                                      "lValueRequested": false,
                                      "names": [],
                                      "nodeType": "FunctionCall",
                                      "src": "1298:10:21",
                                      "tryCall": false,
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_bytes_memory_ptr",
                                        "typeString": "bytes memory"
                                      }
                                    ],
                                    "id": 8705,
                                    "name": "keccak256",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -8,
                                    "src": "1288:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                      "typeString": "function (bytes memory) pure returns (bytes32)"
                                    }
                                  },
                                  "id": 8710,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "functionCall",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1288:21:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "id": 8711,
                                  "name": "chainId",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 8689,
                                  "src": "1328:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 8714,
                                      "name": "this",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": -28,
                                      "src": "1362:4:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_contract$_DeflatingERC20_$9046",
                                        "typeString": "contract DeflatingERC20"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_contract$_DeflatingERC20_$9046",
                                        "typeString": "contract DeflatingERC20"
                                      }
                                    ],
                                    "id": 8713,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "1354:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_address_$",
                                      "typeString": "type(address)"
                                    },
                                    "typeName": {
                                      "id": 8712,
                                      "name": "address",
                                      "nodeType": "ElementaryTypeName",
                                      "src": "1354:7:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": null,
                                        "typeString": null
                                      }
                                    }
                                  },
                                  "id": 8715,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "1354:13:21",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_bytes32",
                                    "typeString": "bytes32"
                                  },
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  {
                                    "typeIdentifier": "t_address",
                                    "typeString": "address"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 8694,
                                  "name": "abi",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -1,
                                  "src": "1104:3:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_abi",
                                    "typeString": "abi"
                                  }
                                },
                                "id": 8695,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "memberName": "encode",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1104:10:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                  "typeString": "function () pure returns (bytes memory)"
                                }
                              },
                              "id": 8716,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1104:278:21",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes_memory_ptr",
                                "typeString": "bytes memory"
                              }
                            ],
                            "id": 8693,
                            "name": "keccak256",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -8,
                            "src": "1080:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                              "typeString": "function (bytes memory) pure returns (bytes32)"
                            }
                          },
                          "id": 8717,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1080:313:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          }
                        },
                        "src": "1061:332:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "id": 8719,
                      "nodeType": "ExpressionStatement",
                      "src": "1061:332:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8721,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1410:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8722,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1410:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8723,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8685,
                            "src": "1422:12:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8720,
                          "name": "_mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8762,
                          "src": "1404:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 8724,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1404:31:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8725,
                      "nodeType": "ExpressionStatement",
                      "src": "1404:31:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 8727,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8686,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8685,
                      "mutability": "mutable",
                      "name": "_totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8727,
                      "src": "936:17:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8684,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "936:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "935:19:21"
                },
                "returnParameters": {
                  "id": 8687,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "962:0:21"
                },
                "scope": 9046,
                "src": "924:519:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 8761,
                  "nodeType": "Block",
                  "src": "1499:153:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8739,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8734,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8648,
                          "src": "1510:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8737,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8731,
                              "src": "1540:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8735,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8648,
                              "src": "1524:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8736,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6658,
                            "src": "1524:15:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8738,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1524:22:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1510:36:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8740,
                      "nodeType": "ExpressionStatement",
                      "src": "1510:36:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8750,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8741,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8652,
                            "src": "1557:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8743,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8742,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8729,
                            "src": "1567:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1557:13:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8748,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8731,
                              "src": "1591:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8744,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8652,
                                "src": "1573:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8746,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8745,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8729,
                                "src": "1583:2:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1573:13:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8747,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6658,
                            "src": "1573:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8749,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1573:24:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1557:40:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8751,
                      "nodeType": "ExpressionStatement",
                      "src": "1557:40:21"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 8755,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1630:1:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 8754,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1622:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8753,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1622:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 8756,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1622:10:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8757,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8729,
                            "src": "1634:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8758,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8731,
                            "src": "1638:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8752,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8683,
                          "src": "1613:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8759,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1613:31:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8760,
                      "nodeType": "EmitStatement",
                      "src": "1608:36:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 8762,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_mint",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8732,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8729,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8762,
                      "src": "1466:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8728,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1466:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8731,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8762,
                      "src": "1478:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8730,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1478:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1465:24:21"
                },
                "returnParameters": {
                  "id": 8733,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1499:0:21"
                },
                "scope": 9046,
                "src": "1451:201:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8796,
                  "nodeType": "Block",
                  "src": "1710:159:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8778,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8769,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8652,
                            "src": "1721:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8771,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8770,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8764,
                            "src": "1731:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1721:15:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8776,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8766,
                              "src": "1759:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8772,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8652,
                                "src": "1739:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8774,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8773,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8764,
                                "src": "1749:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1739:15:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8775,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6680,
                            "src": "1739:19:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8777,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1739:26:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1721:44:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8779,
                      "nodeType": "ExpressionStatement",
                      "src": "1721:44:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8785,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 8780,
                          "name": "totalSupply",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8648,
                          "src": "1776:11:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8783,
                              "name": "value",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8766,
                              "src": "1806:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 8781,
                              "name": "totalSupply",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8648,
                              "src": "1790:11:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8782,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6680,
                            "src": "1790:15:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8784,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1790:22:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1776:36:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8786,
                      "nodeType": "ExpressionStatement",
                      "src": "1776:36:21"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8788,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8764,
                            "src": "1837:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "30",
                                "id": 8791,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "1851:1:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                },
                                "value": "0"
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_0_by_1",
                                  "typeString": "int_const 0"
                                }
                              ],
                              "id": 8790,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1843:7:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_address_$",
                                "typeString": "type(address)"
                              },
                              "typeName": {
                                "id": 8789,
                                "name": "address",
                                "nodeType": "ElementaryTypeName",
                                "src": "1843:7:21",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 8792,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1843:10:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8793,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8766,
                            "src": "1855:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8787,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8683,
                          "src": "1828:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8794,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1828:33:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8795,
                      "nodeType": "EmitStatement",
                      "src": "1823:38:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 8797,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_burn",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8767,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8764,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8797,
                      "src": "1675:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8763,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1675:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8766,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8797,
                      "src": "1689:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8765,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1689:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1674:26:21"
                },
                "returnParameters": {
                  "id": 8768,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1710:0:21"
                },
                "scope": 9046,
                "src": "1660:209:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "internal"
              },
              {
                "body": {
                  "id": 8820,
                  "nodeType": "Block",
                  "src": "1947:99:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8812,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8806,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8658,
                              "src": "1958:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 8809,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8807,
                              "name": "owner",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8799,
                              "src": "1968:5:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1958:16:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8810,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8808,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8801,
                            "src": "1975:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1958:25:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 8811,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8803,
                          "src": "1986:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1958:33:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8813,
                      "nodeType": "ExpressionStatement",
                      "src": "1958:33:21"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8815,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8799,
                            "src": "2016:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8816,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8801,
                            "src": "2023:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8817,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8803,
                            "src": "2032:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8814,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8675,
                          "src": "2007:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8818,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2007:31:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8819,
                      "nodeType": "EmitStatement",
                      "src": "2002:36:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 8821,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8804,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8799,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8821,
                      "src": "1895:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8798,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1895:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8801,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8821,
                      "src": "1910:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8800,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1910:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8803,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8821,
                      "src": "1927:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8802,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1927:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1894:44:21"
                },
                "returnParameters": {
                  "id": 8805,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1947:0:21"
                },
                "scope": 9046,
                "src": "1877:169:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 8876,
                  "nodeType": "Block",
                  "src": "2119:310:21",
                  "statements": [
                    {
                      "assignments": [
                        8831
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8831,
                          "mutability": "mutable",
                          "name": "burnAmount",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8876,
                          "src": "2130:15:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8830,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2130:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8835,
                      "initialValue": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8834,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "id": 8832,
                          "name": "value",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8827,
                          "src": "2148:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "/",
                        "rightExpression": {
                          "argumentTypes": null,
                          "hexValue": "313030",
                          "id": 8833,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "2156:3:21",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_100_by_1",
                            "typeString": "int_const 100"
                          },
                          "value": "100"
                        },
                        "src": "2148:11:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2130:29:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8837,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8823,
                            "src": "2176:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8838,
                            "name": "burnAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8831,
                            "src": "2182:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8836,
                          "name": "_burn",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8797,
                          "src": "2170:5:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 8839,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2170:23:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8840,
                      "nodeType": "ExpressionStatement",
                      "src": "2170:23:21"
                    },
                    {
                      "assignments": [
                        8842
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8842,
                          "mutability": "mutable",
                          "name": "transferAmount",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 8876,
                          "src": "2204:19:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "typeName": {
                            "id": 8841,
                            "name": "uint",
                            "nodeType": "ElementaryTypeName",
                            "src": "2204:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 8847,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8845,
                            "name": "burnAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8831,
                            "src": "2236:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 8843,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8827,
                            "src": "2226:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "id": 8844,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sub",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": 6680,
                          "src": "2226:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                            "typeString": "function (uint256,uint256) pure returns (uint256)"
                          }
                        },
                        "id": 8846,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2226:21:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2204:43:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8857,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8848,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8652,
                            "src": "2258:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8850,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8849,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8823,
                            "src": "2268:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2258:15:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8855,
                              "name": "transferAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8842,
                              "src": "2296:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8851,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8652,
                                "src": "2276:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8853,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8852,
                                "name": "from",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8823,
                                "src": "2286:4:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2276:15:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8854,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sub",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6680,
                            "src": "2276:19:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8856,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2276:35:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2258:53:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8858,
                      "nodeType": "ExpressionStatement",
                      "src": "2258:53:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 8868,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 8859,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8652,
                            "src": "2322:9:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8861,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 8860,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8825,
                            "src": "2332:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "2322:13:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8866,
                              "name": "transferAmount",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8842,
                              "src": "2356:14:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 8862,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8652,
                                "src": "2338:9:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 8864,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 8863,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8825,
                                "src": "2348:2:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "2338:13:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8865,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "add",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": 6658,
                            "src": "2338:17:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                              "typeString": "function (uint256,uint256) pure returns (uint256)"
                            }
                          },
                          "id": 8867,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2338:33:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2322:49:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 8869,
                      "nodeType": "ExpressionStatement",
                      "src": "2322:49:21"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8871,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8823,
                            "src": "2396:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8872,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8825,
                            "src": "2402:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8873,
                            "name": "transferAmount",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8842,
                            "src": "2406:14:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8870,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8683,
                          "src": "2387:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8874,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2387:34:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8875,
                      "nodeType": "EmitStatement",
                      "src": "2382:39:21"
                    }
                  ]
                },
                "documentation": null,
                "id": 8877,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "_transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8828,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8823,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8877,
                      "src": "2073:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8822,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2073:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8825,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8877,
                      "src": "2087:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8824,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2087:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8827,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8877,
                      "src": "2099:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8826,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2099:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2072:38:21"
                },
                "returnParameters": {
                  "id": 8829,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2119:0:21"
                },
                "scope": 9046,
                "src": "2054:375:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "private"
              },
              {
                "body": {
                  "id": 8895,
                  "nodeType": "Block",
                  "src": "2507:77:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8887,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2527:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8888,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2527:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8889,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8879,
                            "src": "2539:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8890,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8881,
                            "src": "2548:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8886,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8821,
                          "src": "2518:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8891,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2518:36:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8892,
                      "nodeType": "ExpressionStatement",
                      "src": "2518:36:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 8893,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2572:4:21",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 8885,
                      "id": 8894,
                      "nodeType": "Return",
                      "src": "2565:11:21"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 8896,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8882,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8879,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8896,
                      "src": "2454:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8878,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2454:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8881,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8896,
                      "src": "2471:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8880,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2471:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2453:29:21"
                },
                "returnParameters": {
                  "id": 8885,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8884,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8896,
                      "src": "2501:4:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8883,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2501:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2500:6:21"
                },
                "scope": 9046,
                "src": "2437:147:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8914,
                  "nodeType": "Block",
                  "src": "2658:73:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8906,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2679:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8907,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2679:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8908,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8898,
                            "src": "2691:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8909,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8900,
                            "src": "2695:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8905,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8877,
                          "src": "2669:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8910,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2669:32:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8911,
                      "nodeType": "ExpressionStatement",
                      "src": "2669:32:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 8912,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "2719:4:21",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 8904,
                      "id": 8913,
                      "nodeType": "Return",
                      "src": "2712:11:21"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 8915,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8901,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8898,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8915,
                      "src": "2610:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8897,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2610:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8900,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8915,
                      "src": "2622:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8899,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2622:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2609:24:21"
                },
                "returnParameters": {
                  "id": 8904,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8903,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8915,
                      "src": "2652:4:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8902,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2652:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2651:6:21"
                },
                "scope": 9046,
                "src": "2592:139:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 8965,
                  "nodeType": "Block",
                  "src": "2823:217:21",
                  "statements": [
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        },
                        "id": 8937,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 8926,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8658,
                              "src": "2838:9:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 8928,
                            "indexExpression": {
                              "argumentTypes": null,
                              "id": 8927,
                              "name": "from",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8917,
                              "src": "2848:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "2838:15:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 8931,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 8929,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "2854:3:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 8930,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "2854:10:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": false,
                          "nodeType": "IndexAccess",
                          "src": "2838:27:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "!=",
                        "rightExpression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 8935,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "UnaryOperation",
                              "operator": "-",
                              "prefix": true,
                              "src": "2874:2:21",
                              "subExpression": {
                                "argumentTypes": null,
                                "hexValue": "31",
                                "id": 8934,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "number",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "2875:1:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_1_by_1",
                                  "typeString": "int_const 1"
                                },
                                "value": "1"
                              },
                              "typeDescriptions": {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_rational_minus_1_by_1",
                                "typeString": "int_const -1"
                              }
                            ],
                            "id": 8933,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "2869:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_uint256_$",
                              "typeString": "type(uint256)"
                            },
                            "typeName": {
                              "id": 8932,
                              "name": "uint",
                              "nodeType": "ElementaryTypeName",
                              "src": "2869:4:21",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 8936,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "2869:8:21",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "2838:39:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 8956,
                      "nodeType": "IfStatement",
                      "src": "2834:140:21",
                      "trueBody": {
                        "id": 8955,
                        "nodeType": "Block",
                        "src": "2879:95:21",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 8953,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 8938,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8658,
                                    "src": "2894:9:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 8942,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 8939,
                                    "name": "from",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8917,
                                    "src": "2904:4:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "2894:15:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 8943,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 8940,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "2910:3:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 8941,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "2910:10:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "2894:27:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "id": 8951,
                                    "name": "value",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 8921,
                                    "src": "2956:5:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 8944,
                                        "name": "allowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8658,
                                        "src": "2924:9:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(address => uint256))"
                                        }
                                      },
                                      "id": 8946,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 8945,
                                        "name": "from",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8917,
                                        "src": "2934:4:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "2924:15:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 8949,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8947,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "2940:3:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 8948,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "2940:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2924:27:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "id": 8950,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sub",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 6680,
                                  "src": "2924:31:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_internal_pure$_t_uint256_$_t_uint256_$returns$_t_uint256_$bound_to$_t_uint256_$",
                                    "typeString": "function (uint256,uint256) pure returns (uint256)"
                                  }
                                },
                                "id": 8952,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "2924:38:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "2894:68:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 8954,
                            "nodeType": "ExpressionStatement",
                            "src": "2894:68:21"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 8958,
                            "name": "from",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8917,
                            "src": "2994:4:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8959,
                            "name": "to",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8919,
                            "src": "3000:2:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 8960,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8921,
                            "src": "3004:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 8957,
                          "name": "_transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8877,
                          "src": "2984:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 8961,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2984:26:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8962,
                      "nodeType": "ExpressionStatement",
                      "src": "2984:26:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 8963,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "3028:4:21",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 8925,
                      "id": 8964,
                      "nodeType": "Return",
                      "src": "3021:11:21"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 8966,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8922,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8917,
                      "mutability": "mutable",
                      "name": "from",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8966,
                      "src": "2761:12:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8916,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2761:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8919,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8966,
                      "src": "2775:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8918,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2775:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8921,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8966,
                      "src": "2787:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8920,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2787:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2760:38:21"
                },
                "returnParameters": {
                  "id": 8925,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8924,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 8966,
                      "src": "2817:4:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 8923,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "2817:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2816:6:21"
                },
                "scope": 9046,
                "src": "2739:301:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 9044,
                  "nodeType": "Block",
                  "src": "3163:537:21",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 8987,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "id": 8984,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 8974,
                              "src": "3182:8:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 8985,
                                "name": "block",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -4,
                                "src": "3194:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_block",
                                  "typeString": "block"
                                }
                              },
                              "id": 8986,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "timestamp",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3194:15:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "3182:27:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "45585049524544",
                            "id": 8988,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3211:9:21",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                              "typeString": "literal_string \"EXPIRED\""
                            },
                            "value": "EXPIRED"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_bd725cfb5ba01ea5dc5a7159cf41eaa54c28dc001805ce2361d3c894e7c2f72a",
                              "typeString": "literal_string \"EXPIRED\""
                            }
                          ],
                          "id": 8983,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3174:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 8989,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3174:47:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 8990,
                      "nodeType": "ExpressionStatement",
                      "src": "3174:47:21"
                    },
                    {
                      "assignments": [
                        8992
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 8992,
                          "mutability": "mutable",
                          "name": "digest",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9044,
                          "src": "3232:14:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes32",
                            "typeString": "bytes32"
                          },
                          "typeName": {
                            "id": 8991,
                            "name": "bytes32",
                            "nodeType": "ElementaryTypeName",
                            "src": "3232:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 9014,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "hexValue": "1901",
                                "id": 8996,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "string",
                                "lValueRequested": false,
                                "nodeType": "Literal",
                                "src": "3308:10:21",
                                "subdenomination": null,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                "value": "\u0019\u0001"
                              },
                              {
                                "argumentTypes": null,
                                "id": 8997,
                                "name": "DOMAIN_SEPARATOR",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8660,
                                "src": "3337:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9001,
                                        "name": "PERMIT_TYPEHASH",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8663,
                                        "src": "3393:15:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 9002,
                                        "name": "owner",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8968,
                                        "src": "3410:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 9003,
                                        "name": "spender",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8970,
                                        "src": "3417:7:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 9004,
                                        "name": "value",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8972,
                                        "src": "3426:5:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 9008,
                                        "isConstant": false,
                                        "isLValue": false,
                                        "isPure": false,
                                        "lValueRequested": false,
                                        "nodeType": "UnaryOperation",
                                        "operator": "++",
                                        "prefix": false,
                                        "src": "3433:15:21",
                                        "subExpression": {
                                          "argumentTypes": null,
                                          "baseExpression": {
                                            "argumentTypes": null,
                                            "id": 9005,
                                            "name": "nonces",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8667,
                                            "src": "3433:6:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                              "typeString": "mapping(address => uint256)"
                                            }
                                          },
                                          "id": 9007,
                                          "indexExpression": {
                                            "argumentTypes": null,
                                            "id": 9006,
                                            "name": "owner",
                                            "nodeType": "Identifier",
                                            "overloadedDeclarations": [],
                                            "referencedDeclaration": 8968,
                                            "src": "3440:5:21",
                                            "typeDescriptions": {
                                              "typeIdentifier": "t_address",
                                              "typeString": "address"
                                            }
                                          },
                                          "isConstant": false,
                                          "isLValue": true,
                                          "isPure": false,
                                          "lValueRequested": true,
                                          "nodeType": "IndexAccess",
                                          "src": "3433:13:21",
                                          "typeDescriptions": {
                                            "typeIdentifier": "t_uint256",
                                            "typeString": "uint256"
                                          }
                                        },
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      },
                                      {
                                        "argumentTypes": null,
                                        "id": 9009,
                                        "name": "deadline",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 8974,
                                        "src": "3450:8:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_bytes32",
                                          "typeString": "bytes32"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        },
                                        {
                                          "typeIdentifier": "t_uint256",
                                          "typeString": "uint256"
                                        }
                                      ],
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 8999,
                                        "name": "abi",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -1,
                                        "src": "3382:3:21",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_abi",
                                          "typeString": "abi"
                                        }
                                      },
                                      "id": 9000,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "memberName": "encode",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "3382:10:21",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_function_abiencode_pure$__$returns$_t_bytes_memory_ptr_$",
                                        "typeString": "function () pure returns (bytes memory)"
                                      }
                                    },
                                    "id": 9010,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "functionCall",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3382:77:21",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_bytes_memory_ptr",
                                      "typeString": "bytes memory"
                                    }
                                  ],
                                  "id": 8998,
                                  "name": "keccak256",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -8,
                                  "src": "3372:9:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                    "typeString": "function (bytes memory) pure returns (bytes32)"
                                  }
                                },
                                "id": 9011,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "kind": "functionCall",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3372:88:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_stringliteral_301a50b291d33ce1e8e9064e3f6a6c51d902ec22892b50d58abf6357c6a45541",
                                  "typeString": "literal_string \"\u0019\u0001\""
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                },
                                {
                                  "typeIdentifier": "t_bytes32",
                                  "typeString": "bytes32"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 8994,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3273:3:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 8995,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodePacked",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3273:16:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodepacked_pure$__$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function () pure returns (bytes memory)"
                              }
                            },
                            "id": 9012,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3273:202:21",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "id": 8993,
                          "name": "keccak256",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -8,
                          "src": "3249:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                            "typeString": "function (bytes memory) pure returns (bytes32)"
                          }
                        },
                        "id": 9013,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3249:237:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3232:254:21"
                    },
                    {
                      "assignments": [
                        9016
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9016,
                          "mutability": "mutable",
                          "name": "recoveredAddress",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9044,
                          "src": "3497:24:21",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "typeName": {
                            "id": 9015,
                            "name": "address",
                            "nodeType": "ElementaryTypeName",
                            "src": "3497:7:21",
                            "stateMutability": "nonpayable",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 9023,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9018,
                            "name": "digest",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8992,
                            "src": "3534:6:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9019,
                            "name": "v",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8976,
                            "src": "3542:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9020,
                            "name": "r",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8978,
                            "src": "3545:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9021,
                            "name": "s",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8980,
                            "src": "3548:1:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_uint8",
                              "typeString": "uint8"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            },
                            {
                              "typeIdentifier": "t_bytes32",
                              "typeString": "bytes32"
                            }
                          ],
                          "id": 9017,
                          "name": "ecrecover",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -6,
                          "src": "3524:9:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_ecrecover_pure$_t_bytes32_$_t_uint8_$_t_bytes32_$_t_bytes32_$returns$_t_address_$",
                            "typeString": "function (bytes32,uint8,bytes32,bytes32) pure returns (address)"
                          }
                        },
                        "id": 9022,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3524:26:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3497:53:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "id": 9034,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9030,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9025,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9016,
                                "src": "3569:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "!=",
                              "rightExpression": {
                                "argumentTypes": null,
                                "arguments": [
                                  {
                                    "argumentTypes": null,
                                    "hexValue": "30",
                                    "id": 9028,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "kind": "number",
                                    "lValueRequested": false,
                                    "nodeType": "Literal",
                                    "src": "3597:1:21",
                                    "subdenomination": null,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    },
                                    "value": "0"
                                  }
                                ],
                                "expression": {
                                  "argumentTypes": [
                                    {
                                      "typeIdentifier": "t_rational_0_by_1",
                                      "typeString": "int_const 0"
                                    }
                                  ],
                                  "id": 9027,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "lValueRequested": false,
                                  "nodeType": "ElementaryTypeNameExpression",
                                  "src": "3589:7:21",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_type$_t_address_$",
                                    "typeString": "type(address)"
                                  },
                                  "typeName": {
                                    "id": 9026,
                                    "name": "address",
                                    "nodeType": "ElementaryTypeName",
                                    "src": "3589:7:21",
                                    "typeDescriptions": {
                                      "typeIdentifier": null,
                                      "typeString": null
                                    }
                                  }
                                },
                                "id": 9029,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "kind": "typeConversion",
                                "lValueRequested": false,
                                "names": [],
                                "nodeType": "FunctionCall",
                                "src": "3589:10:21",
                                "tryCall": false,
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "src": "3569:30:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": "&&",
                            "rightExpression": {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 9033,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "id": 9031,
                                "name": "recoveredAddress",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9016,
                                "src": "3603:16:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 9032,
                                "name": "owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 8968,
                                "src": "3623:5:21",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "3603:25:21",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            },
                            "src": "3569:59:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "494e56414c49445f5349474e4154555245",
                            "id": 9035,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "3630:19:21",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                              "typeString": "literal_string \"INVALID_SIGNATURE\""
                            },
                            "value": "INVALID_SIGNATURE"
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_5e2e9eaa2d734966dea0900deacd15b20129fbce05255d633a3ce5ebca181b88",
                              "typeString": "literal_string \"INVALID_SIGNATURE\""
                            }
                          ],
                          "id": 9024,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "3561:7:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9036,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3561:89:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9037,
                      "nodeType": "ExpressionStatement",
                      "src": "3561:89:21"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9039,
                            "name": "owner",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8968,
                            "src": "3670:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9040,
                            "name": "spender",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8970,
                            "src": "3677:7:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9041,
                            "name": "value",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 8972,
                            "src": "3686:5:21",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9038,
                          "name": "_approve",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 8821,
                          "src": "3661:8:21",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9042,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3661:31:21",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9043,
                      "nodeType": "ExpressionStatement",
                      "src": "3661:31:21"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d505accf",
                "id": 9045,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "permit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 8981,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 8968,
                      "mutability": "mutable",
                      "name": "owner",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9045,
                      "src": "3064:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8967,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3064:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8970,
                      "mutability": "mutable",
                      "name": "spender",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9045,
                      "src": "3079:15:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 8969,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3079:7:21",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8972,
                      "mutability": "mutable",
                      "name": "value",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9045,
                      "src": "3096:10:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8971,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3096:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8974,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9045,
                      "src": "3108:13:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 8973,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3108:4:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8976,
                      "mutability": "mutable",
                      "name": "v",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9045,
                      "src": "3123:7:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint8",
                        "typeString": "uint8"
                      },
                      "typeName": {
                        "id": 8975,
                        "name": "uint8",
                        "nodeType": "ElementaryTypeName",
                        "src": "3123:5:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint8",
                          "typeString": "uint8"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8978,
                      "mutability": "mutable",
                      "name": "r",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9045,
                      "src": "3132:9:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8977,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3132:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 8980,
                      "mutability": "mutable",
                      "name": "s",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9045,
                      "src": "3143:9:21",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes32",
                        "typeString": "bytes32"
                      },
                      "typeName": {
                        "id": 8979,
                        "name": "bytes32",
                        "nodeType": "ElementaryTypeName",
                        "src": "3143:7:21",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes32",
                          "typeString": "bytes32"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3063:90:21"
                },
                "returnParameters": {
                  "id": 8982,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3163:0:21"
                },
                "scope": 9046,
                "src": "3048:652:21",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 9047,
            "src": "104:3599:21"
          }
        ],
        "src": "37:3668:21"
      }
    },
    "contracts/test/ERC20.sol": {
      "id": 22,
      "AST": {
        "absolutePath": "contracts/test/ERC20.sol",
        "exportedSymbols": {
          "ERC20": [
            9072
          ]
        },
        "id": 9073,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9048,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:22"
          },
          {
            "absolutePath": "contracts/FeSwapERC20.sol",
            "file": "../FeSwapERC20.sol",
            "id": 9049,
            "nodeType": "ImportDirective",
            "scope": 9073,
            "sourceUnit": 405,
            "src": "65:28:22",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [
              {
                "arguments": null,
                "baseName": {
                  "contractScope": null,
                  "id": 9050,
                  "name": "FeSwapERC20",
                  "nodeType": "UserDefinedTypeName",
                  "referencedDeclaration": 404,
                  "src": "115:11:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_FeSwapERC20_$404",
                    "typeString": "contract FeSwapERC20"
                  }
                },
                "id": 9051,
                "nodeType": "InheritanceSpecifier",
                "src": "115:11:22"
              }
            ],
            "contractDependencies": [
              404,
              4666
            ],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9072,
            "linearizedBaseContracts": [
              9072,
              404,
              4666
            ],
            "name": "ERC20",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "6c02a931",
                "id": 9053,
                "mutability": "mutable",
                "name": "tokenName",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9072,
                "src": "134:23:22",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9052,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "134:6:22",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9070,
                  "nodeType": "Block",
                  "src": "229:78:22",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9061,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "246:3:22",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9062,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "246:10:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9063,
                            "name": "_totalSupply",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9055,
                            "src": "258:12:22",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9060,
                          "name": "_mint",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 134,
                          "src": "240:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 9064,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "240:31:22",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9065,
                      "nodeType": "ExpressionStatement",
                      "src": "240:31:22"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9068,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 9066,
                          "name": "tokenName",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9053,
                          "src": "282:9:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_storage",
                            "typeString": "string storage ref"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9067,
                          "name": "_name",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9057,
                          "src": "294:5:22",
                          "typeDescriptions": {
                            "typeIdentifier": "t_string_memory_ptr",
                            "typeString": "string memory"
                          }
                        },
                        "src": "282:17:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage",
                          "typeString": "string storage ref"
                        }
                      },
                      "id": 9069,
                      "nodeType": "ExpressionStatement",
                      "src": "282:17:22"
                    }
                  ]
                },
                "documentation": null,
                "id": 9071,
                "implemented": true,
                "kind": "constructor",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9058,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9055,
                      "mutability": "mutable",
                      "name": "_totalSupply",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9071,
                      "src": "182:17:22",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9054,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "182:4:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9057,
                      "mutability": "mutable",
                      "name": "_name",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9071,
                      "src": "201:19:22",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_string_memory_ptr",
                        "typeString": "string"
                      },
                      "typeName": {
                        "id": 9056,
                        "name": "string",
                        "nodeType": "ElementaryTypeName",
                        "src": "201:6:22",
                        "typeDescriptions": {
                          "typeIdentifier": "t_string_storage_ptr",
                          "typeString": "string"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "181:40:22"
                },
                "returnParameters": {
                  "id": 9059,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "229:0:22"
                },
                "scope": 9072,
                "src": "170:137:22",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 9073,
            "src": "97:213:22"
          }
        ],
        "src": "37:275:22"
      }
    },
    "contracts/test/RouterEventEmitter.sol": {
      "id": 23,
      "AST": {
        "absolutePath": "contracts/test/RouterEventEmitter.sol",
        "exportedSymbols": {
          "RouterEventEmitter": [
            9432
          ]
        },
        "id": 9433,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9074,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:23"
          },
          {
            "absolutePath": "contracts/interfaces/IFeSwapRouter.sol",
            "file": "../interfaces/IFeSwapRouter.sol",
            "id": 9075,
            "nodeType": "ImportDirective",
            "scope": 9433,
            "sourceUnit": 5361,
            "src": "65:41:23",
            "symbolAliases": [],
            "unitAlias": ""
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9432,
            "linearizedBaseContracts": [
              9432
            ],
            "name": "RouterEventEmitter",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "anonymous": false,
                "documentation": null,
                "id": 9080,
                "name": "Amounts",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9079,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9078,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "amounts",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9080,
                      "src": "159:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                        "typeString": "uint256[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9076,
                          "name": "uint",
                          "nodeType": "ElementaryTypeName",
                          "src": "159:4:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "id": 9077,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "159:6:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_uint256_$dyn_storage_ptr",
                          "typeString": "uint256[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "158:16:23"
                },
                "src": "145:30:23"
              },
              {
                "body": {
                  "id": 9083,
                  "nodeType": "Block",
                  "src": "210:2:23",
                  "statements": []
                },
                "documentation": null,
                "id": 9084,
                "implemented": true,
                "kind": "receive",
                "modifiers": [],
                "name": "",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9081,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "190:2:23"
                },
                "returnParameters": {
                  "id": 9082,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "210:0:23"
                },
                "scope": 9432,
                "src": "183:29:23",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 9118,
                  "nodeType": "Block",
                  "src": "452:179:23",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9116,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "id": 9102,
                          "name": "returnData",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9100,
                          "src": "463:10:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "id": 9106,
                                      "name": "router",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 9086,
                                      "src": "527:6:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address",
                                        "typeString": "address"
                                      }
                                    ],
                                    "id": 9105,
                                    "name": "IFeSwapRouter",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 5360,
                                    "src": "513:13:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_contract$_IFeSwapRouter_$5360_$",
                                      "typeString": "type(contract IFeSwapRouter)"
                                    }
                                  },
                                  "id": 9107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "513:21:23",
                                  "tryCall": false,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_contract$_IFeSwapRouter_$5360",
                                    "typeString": "contract IFeSwapRouter"
                                  }
                                },
                                "id": 9108,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "swapExactTokensForTokens",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": 5183,
                                "src": "513:46:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                }
                              },
                              "id": 9109,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "selector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "513:55:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9110,
                              "name": "amountIn",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9088,
                              "src": "570:8:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9111,
                              "name": "amountOutMin",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9090,
                              "src": "580:12:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9112,
                              "name": "path",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9093,
                              "src": "594:4:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9113,
                              "name": "to",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9095,
                              "src": "600:2:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "id": 9114,
                              "name": "deadline",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9097,
                              "src": "604:8:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              },
                              {
                                "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                "typeString": "address[] calldata"
                              },
                              {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            ],
                            "expression": {
                              "argumentTypes": null,
                              "id": 9103,
                              "name": "abi",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -1,
                              "src": "476:3:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_abi",
                                "typeString": "abi"
                              }
                            },
                            "id": 9104,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "memberName": "encodeWithSelector",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "476:22:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                              "typeString": "function (bytes4) pure returns (bytes memory)"
                            }
                          },
                          "id": 9115,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "476:147:23",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes memory"
                          }
                        },
                        "src": "463:160:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_memory_ptr",
                          "typeString": "bytes memory"
                        }
                      },
                      "id": 9117,
                      "nodeType": "ExpressionStatement",
                      "src": "463:160:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "5f3269ea",
                "id": 9119,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "encodeFunc",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9098,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9086,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "250:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9085,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "250:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9088,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "275:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9087,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "275:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9090,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "299:17:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9089,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "299:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9093,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "327:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9091,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "327:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9092,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "327:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9095,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "361:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9094,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "361:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9097,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "382:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9096,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "382:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "239:163:23"
                },
                "returnParameters": {
                  "id": 9101,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9100,
                      "mutability": "mutable",
                      "name": "returnData",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9119,
                      "src": "426:23:23",
                      "stateVariable": false,
                      "storageLocation": "memory",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bytes_memory_ptr",
                        "typeString": "bytes"
                      },
                      "typeName": {
                        "id": 9099,
                        "name": "bytes",
                        "nodeType": "ElementaryTypeName",
                        "src": "426:5:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bytes_storage_ptr",
                          "typeString": "bytes"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "425:25:23"
                },
                "scope": 9432,
                "src": "220:411:23",
                "stateMutability": "pure",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 9171,
                  "nodeType": "Block",
                  "src": "845:312:23",
                  "statements": [
                    {
                      "assignments": [
                        9136,
                        9138
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9136,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9171,
                          "src": "857:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9135,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "857:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9138,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9171,
                          "src": "871:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9137,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "871:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 9155,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9144,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9121,
                                        "src": "969:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 9143,
                                      "name": "IFeSwapRouter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5360,
                                      "src": "955:13:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapRouter_$5360_$",
                                        "typeString": "type(contract IFeSwapRouter)"
                                      }
                                    },
                                    "id": 9145,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "955:21:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapRouter_$5360",
                                      "typeString": "contract IFeSwapRouter"
                                    }
                                  },
                                  "id": 9146,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapExactTokensForTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5183,
                                  "src": "955:46:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                  }
                                },
                                "id": 9147,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "955:55:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9148,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9123,
                                "src": "1012:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9149,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9125,
                                "src": "1022:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9150,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9128,
                                "src": "1036:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9151,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9130,
                                "src": "1042:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9152,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9132,
                                "src": "1046:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9141,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "918:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9142,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "918:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 9153,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "918:147:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9139,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9121,
                            "src": "898:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9140,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "898:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 9154,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "898:168:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "856:210:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9157,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9136,
                            "src": "1084:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 9156,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "1077:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 9158,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1077:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9159,
                      "nodeType": "ExpressionStatement",
                      "src": "1077:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9163,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9138,
                                "src": "1127:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 9165,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1140:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 9164,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1140:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 9166,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1140:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 9167,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1139:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9161,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1116:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9162,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1116:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 9168,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1116:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 9160,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9080,
                          "src": "1108:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 9169,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1108:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9170,
                      "nodeType": "EmitStatement",
                      "src": "1103:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "375734d9",
                "id": 9172,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9133,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9121,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9172,
                      "src": "683:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9120,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "683:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9123,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9172,
                      "src": "708:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9122,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "708:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9125,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9172,
                      "src": "732:17:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9124,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "732:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9128,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9172,
                      "src": "760:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9126,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "760:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9127,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "760:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9130,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9172,
                      "src": "794:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9129,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "794:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9132,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9172,
                      "src": "815:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9131,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "815:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "672:163:23"
                },
                "returnParameters": {
                  "id": 9134,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "845:0:23"
                },
                "scope": 9432,
                "src": "639:518:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 9224,
                  "nodeType": "Block",
                  "src": "1371:312:23",
                  "statements": [
                    {
                      "assignments": [
                        9189,
                        9191
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9189,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9224,
                          "src": "1383:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9188,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1383:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9191,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9224,
                          "src": "1397:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9190,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1397:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 9208,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9197,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9174,
                                        "src": "1495:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 9196,
                                      "name": "IFeSwapRouter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5360,
                                      "src": "1481:13:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapRouter_$5360_$",
                                        "typeString": "type(contract IFeSwapRouter)"
                                      }
                                    },
                                    "id": 9198,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1481:21:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapRouter_$5360",
                                      "typeString": "contract IFeSwapRouter"
                                    }
                                  },
                                  "id": 9199,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapTokensForExactTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5200,
                                  "src": "1481:46:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                  }
                                },
                                "id": 9200,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1481:55:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9201,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9176,
                                "src": "1538:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9202,
                                "name": "amountInMax",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9178,
                                "src": "1549:11:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9203,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9181,
                                "src": "1562:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9204,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9183,
                                "src": "1568:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9205,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9185,
                                "src": "1572:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9194,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1444:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9195,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1444:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 9206,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1444:147:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9192,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9174,
                            "src": "1424:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9193,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1424:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 9207,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1424:168:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1382:210:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9210,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9189,
                            "src": "1610:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 9209,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "1603:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 9211,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1603:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9212,
                      "nodeType": "ExpressionStatement",
                      "src": "1603:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9216,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9191,
                                "src": "1653:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 9218,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "1666:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 9217,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "1666:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 9219,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1666:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 9220,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "1665:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9214,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1642:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9215,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1642:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 9221,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1642:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 9213,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9080,
                          "src": "1634:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 9222,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1634:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9223,
                      "nodeType": "EmitStatement",
                      "src": "1629:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "22b58410",
                "id": 9225,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9186,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9174,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9225,
                      "src": "1209:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9173,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1209:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9176,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9225,
                      "src": "1234:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9175,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1234:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9178,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9225,
                      "src": "1259:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9177,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1259:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9181,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9225,
                      "src": "1286:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9179,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1286:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9180,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1286:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9183,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9225,
                      "src": "1320:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9182,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1320:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9185,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9225,
                      "src": "1341:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9184,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1341:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1198:163:23"
                },
                "returnParameters": {
                  "id": 9187,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1371:0:23"
                },
                "scope": 9432,
                "src": "1165:518:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 9274,
                  "nodeType": "Block",
                  "src": "1878:299:23",
                  "statements": [
                    {
                      "assignments": [
                        9240,
                        9242
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9240,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9274,
                          "src": "1890:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9239,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "1890:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9242,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9274,
                          "src": "1904:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9241,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "1904:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 9258,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9248,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9227,
                                        "src": "2002:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 9247,
                                      "name": "IFeSwapRouter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5360,
                                      "src": "1988:13:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapRouter_$5360_$",
                                        "typeString": "type(contract IFeSwapRouter)"
                                      }
                                    },
                                    "id": 9249,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "1988:21:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapRouter_$5360",
                                      "typeString": "contract IFeSwapRouter"
                                    }
                                  },
                                  "id": 9250,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapExactETHForTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5215,
                                  "src": "1988:43:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)"
                                  }
                                },
                                "id": 9251,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "1988:52:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9252,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9229,
                                "src": "2042:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9253,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9232,
                                "src": "2056:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9254,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9234,
                                "src": "2062:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9255,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9236,
                                "src": "2066:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9245,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "1951:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9246,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1951:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 9256,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1951:134:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9243,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9227,
                            "src": "1931:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9244,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "1931:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 9257,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1931:155:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "1889:197:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9260,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9240,
                            "src": "2104:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 9259,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "2097:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 9261,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2097:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9262,
                      "nodeType": "ExpressionStatement",
                      "src": "2097:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9266,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9242,
                                "src": "2147:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 9268,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2160:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 9267,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2160:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 9269,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2160:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 9270,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2159:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9264,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2136:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9265,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2136:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 9271,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2136:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 9263,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9080,
                          "src": "2128:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 9272,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2128:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9273,
                      "nodeType": "EmitStatement",
                      "src": "2123:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fde1adda",
                "id": 9275,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactETHForTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9237,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9227,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9275,
                      "src": "1732:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9226,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1732:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9229,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9275,
                      "src": "1757:17:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9228,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1757:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9232,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9275,
                      "src": "1785:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9230,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "1785:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9231,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "1785:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9234,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9275,
                      "src": "1819:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9233,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1819:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9236,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9275,
                      "src": "1840:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9235,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1840:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1721:139:23"
                },
                "returnParameters": {
                  "id": 9238,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1878:0:23"
                },
                "scope": 9432,
                "src": "1691:486:23",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 9327,
                  "nodeType": "Block",
                  "src": "2388:309:23",
                  "statements": [
                    {
                      "assignments": [
                        9292,
                        9294
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9292,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9327,
                          "src": "2400:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9291,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2400:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9294,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9327,
                          "src": "2414:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9293,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2414:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 9311,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9300,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9277,
                                        "src": "2512:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 9299,
                                      "name": "IFeSwapRouter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5360,
                                      "src": "2498:13:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapRouter_$5360_$",
                                        "typeString": "type(contract IFeSwapRouter)"
                                      }
                                    },
                                    "id": 9301,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "2498:21:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapRouter_$5360",
                                      "typeString": "contract IFeSwapRouter"
                                    }
                                  },
                                  "id": 9302,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapTokensForExactETH",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5232,
                                  "src": "2498:43:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                  }
                                },
                                "id": 9303,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "2498:52:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9304,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9279,
                                "src": "2552:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9305,
                                "name": "amountInMax",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9281,
                                "src": "2563:11:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9306,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9284,
                                "src": "2576:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9307,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9286,
                                "src": "2582:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9308,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9288,
                                "src": "2586:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9297,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2461:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9298,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2461:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 9309,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2461:144:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9295,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9277,
                            "src": "2441:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9296,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2441:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 9310,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2441:165:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2399:207:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9313,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9292,
                            "src": "2624:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 9312,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "2617:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 9314,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2617:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9315,
                      "nodeType": "ExpressionStatement",
                      "src": "2617:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9319,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9294,
                                "src": "2667:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 9321,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "2680:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 9320,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "2680:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 9322,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "2680:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 9323,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "2679:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9317,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2656:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9318,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2656:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 9324,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2656:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 9316,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9080,
                          "src": "2648:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 9325,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2648:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9326,
                      "nodeType": "EmitStatement",
                      "src": "2643:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "fa3219d5",
                "id": 9328,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapTokensForExactETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9289,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9277,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9328,
                      "src": "2226:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9276,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2226:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9279,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9328,
                      "src": "2251:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9278,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2251:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9281,
                      "mutability": "mutable",
                      "name": "amountInMax",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9328,
                      "src": "2276:16:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9280,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2276:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9284,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9328,
                      "src": "2303:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9282,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2303:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9283,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2303:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9286,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9328,
                      "src": "2337:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9285,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2337:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9288,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9328,
                      "src": "2358:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9287,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2358:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2215:163:23"
                },
                "returnParameters": {
                  "id": 9290,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2388:0:23"
                },
                "scope": 9432,
                "src": "2185:512:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 9380,
                  "nodeType": "Block",
                  "src": "2908:309:23",
                  "statements": [
                    {
                      "assignments": [
                        9345,
                        9347
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9345,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9380,
                          "src": "2920:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9344,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "2920:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9347,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9380,
                          "src": "2934:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9346,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "2934:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 9364,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9353,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9330,
                                        "src": "3032:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 9352,
                                      "name": "IFeSwapRouter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5360,
                                      "src": "3018:13:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapRouter_$5360_$",
                                        "typeString": "type(contract IFeSwapRouter)"
                                      }
                                    },
                                    "id": 9354,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3018:21:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapRouter_$5360",
                                      "typeString": "contract IFeSwapRouter"
                                    }
                                  },
                                  "id": 9355,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapExactTokensForETH",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5249,
                                  "src": "3018:43:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_nonpayable$_t_uint256_$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,uint256,address[] memory,address,uint256) external returns (uint256[] memory)"
                                  }
                                },
                                "id": 9356,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3018:52:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9357,
                                "name": "amountIn",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9332,
                                "src": "3072:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9358,
                                "name": "amountOutMin",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9334,
                                "src": "3082:12:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9359,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9337,
                                "src": "3096:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9360,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9339,
                                "src": "3102:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9361,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9341,
                                "src": "3106:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9350,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "2981:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9351,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "2981:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 9362,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "2981:144:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9348,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9330,
                            "src": "2961:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9349,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "2961:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 9363,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "2961:165:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "2919:207:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9366,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9345,
                            "src": "3144:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 9365,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "3137:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 9367,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3137:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9368,
                      "nodeType": "ExpressionStatement",
                      "src": "3137:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9372,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9347,
                                "src": "3187:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 9374,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3200:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 9373,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3200:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 9375,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3200:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 9376,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3199:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9370,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3176:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9371,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3176:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 9377,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3176:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 9369,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9080,
                          "src": "3168:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 9378,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3168:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9379,
                      "nodeType": "EmitStatement",
                      "src": "3163:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "9c91fcb5",
                "id": 9381,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapExactTokensForETH",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9342,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9330,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9381,
                      "src": "2746:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9329,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2746:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9332,
                      "mutability": "mutable",
                      "name": "amountIn",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9381,
                      "src": "2771:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9331,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2771:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9334,
                      "mutability": "mutable",
                      "name": "amountOutMin",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9381,
                      "src": "2795:17:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9333,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2795:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9337,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9381,
                      "src": "2823:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9335,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "2823:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9336,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "2823:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9339,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9381,
                      "src": "2857:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9338,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "2857:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9341,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9381,
                      "src": "2878:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9340,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "2878:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "2735:163:23"
                },
                "returnParameters": {
                  "id": 9343,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "2908:0:23"
                },
                "scope": 9432,
                "src": "2705:512:23",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "external"
              },
              {
                "body": {
                  "id": 9430,
                  "nodeType": "Block",
                  "src": "3409:296:23",
                  "statements": [
                    {
                      "assignments": [
                        9396,
                        9398
                      ],
                      "declarations": [
                        {
                          "constant": false,
                          "id": 9396,
                          "mutability": "mutable",
                          "name": "success",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9430,
                          "src": "3421:12:23",
                          "stateVariable": false,
                          "storageLocation": "default",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "typeName": {
                            "id": 9395,
                            "name": "bool",
                            "nodeType": "ElementaryTypeName",
                            "src": "3421:4:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        },
                        {
                          "constant": false,
                          "id": 9398,
                          "mutability": "mutable",
                          "name": "returnData",
                          "nodeType": "VariableDeclaration",
                          "overrides": null,
                          "scope": 9430,
                          "src": "3435:23:23",
                          "stateVariable": false,
                          "storageLocation": "memory",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes_memory_ptr",
                            "typeString": "bytes"
                          },
                          "typeName": {
                            "id": 9397,
                            "name": "bytes",
                            "nodeType": "ElementaryTypeName",
                            "src": "3435:5:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_storage_ptr",
                              "typeString": "bytes"
                            }
                          },
                          "value": null,
                          "visibility": "internal"
                        }
                      ],
                      "id": 9414,
                      "initialValue": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "arguments": [
                                      {
                                        "argumentTypes": null,
                                        "id": 9404,
                                        "name": "router",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9383,
                                        "src": "3533:6:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      }
                                    ],
                                    "expression": {
                                      "argumentTypes": [
                                        {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      ],
                                      "id": 9403,
                                      "name": "IFeSwapRouter",
                                      "nodeType": "Identifier",
                                      "overloadedDeclarations": [],
                                      "referencedDeclaration": 5360,
                                      "src": "3519:13:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_contract$_IFeSwapRouter_$5360_$",
                                        "typeString": "type(contract IFeSwapRouter)"
                                      }
                                    },
                                    "id": 9405,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": false,
                                    "kind": "typeConversion",
                                    "lValueRequested": false,
                                    "names": [],
                                    "nodeType": "FunctionCall",
                                    "src": "3519:21:23",
                                    "tryCall": false,
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_contract$_IFeSwapRouter_$5360",
                                      "typeString": "contract IFeSwapRouter"
                                    }
                                  },
                                  "id": 9406,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "swapETHForExactTokens",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": 5264,
                                  "src": "3519:43:23",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_function_external_payable$_t_uint256_$_t_array$_t_address_$dyn_memory_ptr_$_t_address_$_t_uint256_$returns$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                    "typeString": "function (uint256,address[] memory,address,uint256) payable external returns (uint256[] memory)"
                                  }
                                },
                                "id": 9407,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "selector",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "3519:52:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9408,
                                "name": "amountOut",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9385,
                                "src": "3573:9:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9409,
                                "name": "path",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9388,
                                "src": "3584:4:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9410,
                                "name": "to",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9390,
                                "src": "3590:2:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "id": 9411,
                                "name": "deadline",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9392,
                                "src": "3594:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes4",
                                  "typeString": "bytes4"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                },
                                {
                                  "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                                  "typeString": "address[] calldata"
                                },
                                {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                },
                                {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9401,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3482:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9402,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "encodeWithSelector",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3482:22:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abiencodewithselector_pure$_t_bytes4_$returns$_t_bytes_memory_ptr_$",
                                "typeString": "function (bytes4) pure returns (bytes memory)"
                              }
                            },
                            "id": 9412,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3482:131:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bytes_memory_ptr",
                              "typeString": "bytes memory"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "id": 9399,
                            "name": "router",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9383,
                            "src": "3462:6:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "id": 9400,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "delegatecall",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "3462:19:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_baredelegatecall_nonpayable$_t_bytes_memory_ptr_$returns$_t_bool_$_t_bytes_memory_ptr_$",
                            "typeString": "function (bytes memory) returns (bool,bytes memory)"
                          }
                        },
                        "id": 9413,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3462:152:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$_t_bool_$_t_bytes_memory_ptr_$",
                          "typeString": "tuple(bool,bytes memory)"
                        }
                      },
                      "nodeType": "VariableDeclarationStatement",
                      "src": "3420:194:23"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9416,
                            "name": "success",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9396,
                            "src": "3632:7:23",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          ],
                          "id": 9415,
                          "name": "assert",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": -3,
                          "src": "3625:6:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_assert_pure$_t_bool_$returns$__$",
                            "typeString": "function (bool) pure"
                          }
                        },
                        "id": 9417,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3625:15:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9418,
                      "nodeType": "ExpressionStatement",
                      "src": "3625:15:23"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9422,
                                "name": "returnData",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9398,
                                "src": "3675:10:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                }
                              },
                              {
                                "argumentTypes": null,
                                "components": [
                                  {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "id": 9424,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": true,
                                      "lValueRequested": false,
                                      "nodeType": "ElementaryTypeNameExpression",
                                      "src": "3688:4:23",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_type$_t_uint256_$",
                                        "typeString": "type(uint256)"
                                      },
                                      "typeName": {
                                        "id": 9423,
                                        "name": "uint",
                                        "nodeType": "ElementaryTypeName",
                                        "src": "3688:4:23",
                                        "typeDescriptions": {
                                          "typeIdentifier": null,
                                          "typeString": null
                                        }
                                      }
                                    },
                                    "id": 9425,
                                    "indexExpression": null,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "3688:6:23",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                      "typeString": "type(uint256[] memory)"
                                    }
                                  }
                                ],
                                "id": 9426,
                                "isConstant": false,
                                "isInlineArray": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "TupleExpression",
                                "src": "3687:8:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_bytes_memory_ptr",
                                  "typeString": "bytes memory"
                                },
                                {
                                  "typeIdentifier": "t_type$_t_array$_t_uint256_$dyn_memory_ptr_$",
                                  "typeString": "type(uint256[] memory)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": null,
                                "id": 9420,
                                "name": "abi",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -1,
                                "src": "3664:3:23",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_abi",
                                  "typeString": "abi"
                                }
                              },
                              "id": 9421,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "memberName": "decode",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "3664:10:23",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_abidecode_pure$__$returns$__$",
                                "typeString": "function () pure"
                              }
                            },
                            "id": 9427,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "3664:32:23",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_array$_t_uint256_$dyn_memory_ptr",
                              "typeString": "uint256[] memory"
                            }
                          ],
                          "id": 9419,
                          "name": "Amounts",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9080,
                          "src": "3656:7:23",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_array$_t_uint256_$dyn_memory_ptr_$returns$__$",
                            "typeString": "function (uint256[] memory)"
                          }
                        },
                        "id": 9428,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "3656:41:23",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9429,
                      "nodeType": "EmitStatement",
                      "src": "3651:46:23"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "b05f579e",
                "id": 9431,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "swapETHForExactTokens",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9393,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9383,
                      "mutability": "mutable",
                      "name": "router",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9431,
                      "src": "3266:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9382,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3266:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9385,
                      "mutability": "mutable",
                      "name": "amountOut",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9431,
                      "src": "3291:14:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9384,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3291:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9388,
                      "mutability": "mutable",
                      "name": "path",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9431,
                      "src": "3316:23:23",
                      "stateVariable": false,
                      "storageLocation": "calldata",
                      "typeDescriptions": {
                        "typeIdentifier": "t_array$_t_address_$dyn_calldata_ptr",
                        "typeString": "address[]"
                      },
                      "typeName": {
                        "baseType": {
                          "id": 9386,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "3316:7:23",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9387,
                        "length": null,
                        "nodeType": "ArrayTypeName",
                        "src": "3316:9:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_array$_t_address_$dyn_storage_ptr",
                          "typeString": "address[]"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9390,
                      "mutability": "mutable",
                      "name": "to",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9431,
                      "src": "3350:10:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9389,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "3350:7:23",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9392,
                      "mutability": "mutable",
                      "name": "deadline",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9431,
                      "src": "3371:13:23",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9391,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "3371:4:23",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "3255:136:23"
                },
                "returnParameters": {
                  "id": 9394,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "3409:0:23"
                },
                "scope": 9432,
                "src": "3225:480:23",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "external"
              }
            ],
            "scope": 9433,
            "src": "110:3598:23"
          }
        ],
        "src": "37:3673:23"
      }
    },
    "contracts/test/WETH9.sol": {
      "id": 24,
      "AST": {
        "absolutePath": "contracts/test/WETH9.sol",
        "exportedSymbols": {
          "WETH9": [
            9676
          ]
        },
        "id": 9677,
        "license": "GPL-3.0",
        "nodeType": "SourceUnit",
        "nodes": [
          {
            "id": 9434,
            "literals": [
              "solidity",
              "=",
              "0.6",
              ".12"
            ],
            "nodeType": "PragmaDirective",
            "src": "37:24:24"
          },
          {
            "abstract": false,
            "baseContracts": [],
            "contractDependencies": [],
            "contractKind": "contract",
            "documentation": null,
            "fullyImplemented": true,
            "id": 9676,
            "linearizedBaseContracts": [
              9676
            ],
            "name": "WETH9",
            "nodeType": "ContractDefinition",
            "nodes": [
              {
                "constant": false,
                "functionSelector": "06fdde03",
                "id": 9437,
                "mutability": "mutable",
                "name": "name",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9676,
                "src": "87:40:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9435,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "87:6:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "57726170706564204574686572",
                  "id": 9436,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "112:15:24",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_00cd3d46df44f2cbb950cf84eb2e92aa2ddd23195b1a009173ea59a063357ed3",
                    "typeString": "literal_string \"Wrapped Ether\""
                  },
                  "value": "Wrapped Ether"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "95d89b41",
                "id": 9440,
                "mutability": "mutable",
                "name": "symbol",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9676,
                "src": "134:31:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_string_storage",
                  "typeString": "string"
                },
                "typeName": {
                  "id": 9438,
                  "name": "string",
                  "nodeType": "ElementaryTypeName",
                  "src": "134:6:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_string_storage_ptr",
                    "typeString": "string"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "57455448",
                  "id": 9439,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "string",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "159:6:24",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_stringliteral_0f8a193ff464434486c0daf7db2a895884365d2bc84ba47a68fcf89c1b14b5b8",
                    "typeString": "literal_string \"WETH\""
                  },
                  "value": "WETH"
                },
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "313ce567",
                "id": 9443,
                "mutability": "mutable",
                "name": "decimals",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9676,
                "src": "172:27:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_uint8",
                  "typeString": "uint8"
                },
                "typeName": {
                  "id": 9441,
                  "name": "uint8",
                  "nodeType": "ElementaryTypeName",
                  "src": "172:5:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_uint8",
                    "typeString": "uint8"
                  }
                },
                "value": {
                  "argumentTypes": null,
                  "hexValue": "3138",
                  "id": 9442,
                  "isConstant": false,
                  "isLValue": false,
                  "isPure": true,
                  "kind": "number",
                  "lValueRequested": false,
                  "nodeType": "Literal",
                  "src": "197:2:24",
                  "subdenomination": null,
                  "typeDescriptions": {
                    "typeIdentifier": "t_rational_18_by_1",
                    "typeString": "int_const 18"
                  },
                  "value": "18"
                },
                "visibility": "public"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9451,
                "name": "Approval",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9450,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9445,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9451,
                      "src": "224:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9444,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "224:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9447,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "guy",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9451,
                      "src": "245:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9446,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "245:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9449,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9451,
                      "src": "266:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9448,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "266:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "223:52:24"
                },
                "src": "208:68:24"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9459,
                "name": "Transfer",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9458,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9453,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9459,
                      "src": "298:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9452,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "298:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9455,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9459,
                      "src": "319:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9454,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "319:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9457,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9459,
                      "src": "340:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9456,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "340:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "297:52:24"
                },
                "src": "282:68:24"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9465,
                "name": "Deposit",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9464,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9461,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9465,
                      "src": "371:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9460,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "371:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9463,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9465,
                      "src": "392:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9462,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "392:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "370:31:24"
                },
                "src": "356:46:24"
              },
              {
                "anonymous": false,
                "documentation": null,
                "id": 9471,
                "name": "Withdrawal",
                "nodeType": "EventDefinition",
                "parameters": {
                  "id": 9470,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9467,
                      "indexed": true,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9471,
                      "src": "426:19:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9466,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "426:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9469,
                      "indexed": false,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9471,
                      "src": "447:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9468,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "447:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "425:31:24"
                },
                "src": "408:49:24"
              },
              {
                "constant": false,
                "functionSelector": "70a08231",
                "id": 9475,
                "mutability": "mutable",
                "name": "balanceOf",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9676,
                "src": "465:65:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                  "typeString": "mapping(address => uint256)"
                },
                "typeName": {
                  "id": 9474,
                  "keyType": {
                    "id": 9472,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "474:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "465:25:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                    "typeString": "mapping(address => uint256)"
                  },
                  "valueType": {
                    "id": 9473,
                    "name": "uint",
                    "nodeType": "ElementaryTypeName",
                    "src": "485:4:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_uint256",
                      "typeString": "uint256"
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "constant": false,
                "functionSelector": "dd62ed3e",
                "id": 9481,
                "mutability": "mutable",
                "name": "allowance",
                "nodeType": "VariableDeclaration",
                "overrides": null,
                "scope": 9676,
                "src": "537:65:24",
                "stateVariable": true,
                "storageLocation": "default",
                "typeDescriptions": {
                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                  "typeString": "mapping(address => mapping(address => uint256))"
                },
                "typeName": {
                  "id": 9480,
                  "keyType": {
                    "id": 9476,
                    "name": "address",
                    "nodeType": "ElementaryTypeName",
                    "src": "546:7:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_address",
                      "typeString": "address"
                    }
                  },
                  "nodeType": "Mapping",
                  "src": "537:46:24",
                  "typeDescriptions": {
                    "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                    "typeString": "mapping(address => mapping(address => uint256))"
                  },
                  "valueType": {
                    "id": 9479,
                    "keyType": {
                      "id": 9477,
                      "name": "address",
                      "nodeType": "ElementaryTypeName",
                      "src": "566:7:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      }
                    },
                    "nodeType": "Mapping",
                    "src": "557:25:24",
                    "typeDescriptions": {
                      "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                      "typeString": "mapping(address => uint256)"
                    },
                    "valueType": {
                      "id": 9478,
                      "name": "uint",
                      "nodeType": "ElementaryTypeName",
                      "src": "577:4:24",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      }
                    }
                  }
                },
                "value": null,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9499,
                  "nodeType": "Block",
                  "src": "714:99:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9490,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9484,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9475,
                            "src": "725:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9487,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9485,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "735:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9486,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "735:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "725:21:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 9488,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": -15,
                            "src": "750:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 9489,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "value",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "750:9:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "725:34:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9491,
                      "nodeType": "ExpressionStatement",
                      "src": "725:34:24"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9493,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "783:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9494,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "783:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9495,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "795:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9496,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "value",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "795:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9492,
                          "name": "Deposit",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9465,
                          "src": "775:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 9497,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "775:30:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9498,
                      "nodeType": "EmitStatement",
                      "src": "770:35:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "d0e30db0",
                "id": 9500,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "deposit",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9482,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "696:2:24"
                },
                "returnParameters": {
                  "id": 9483,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "714:0:24"
                },
                "scope": 9676,
                "src": "680:133:24",
                "stateMutability": "payable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9536,
                  "nodeType": "Block",
                  "src": "854:177:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9511,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9506,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9475,
                                "src": "873:9:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9509,
                              "indexExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 9507,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": -15,
                                  "src": "883:3:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 9508,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "883:10:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "873:21:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9510,
                              "name": "wad",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9502,
                              "src": "898:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "873:28:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 9512,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "903:2:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 9505,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "865:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9513,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "865:41:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9514,
                      "nodeType": "ExpressionStatement",
                      "src": "865:41:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9520,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9515,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9475,
                            "src": "917:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9518,
                          "indexExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9516,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "927:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9517,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "927:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "917:21:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9519,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9502,
                          "src": "942:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "917:28:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9521,
                      "nodeType": "ExpressionStatement",
                      "src": "917:28:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9527,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9502,
                            "src": "976:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "expression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9522,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "956:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9525,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "956:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "id": 9526,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "transfer",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "956:19:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_transfer_nonpayable$_t_uint256_$returns$__$",
                            "typeString": "function (uint256)"
                          }
                        },
                        "id": 9528,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "956:24:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9529,
                      "nodeType": "ExpressionStatement",
                      "src": "956:24:24"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9531,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1007:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9532,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1007:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9533,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9502,
                            "src": "1019:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9530,
                          "name": "Withdrawal",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9471,
                          "src": "996:10:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,uint256)"
                          }
                        },
                        "id": 9534,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "996:27:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9535,
                      "nodeType": "EmitStatement",
                      "src": "991:32:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "2e1a7d4d",
                "id": 9537,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "withdraw",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9503,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9502,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9537,
                      "src": "837:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9501,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "837:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "836:10:24"
                },
                "returnParameters": {
                  "id": 9504,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "854:0:24"
                },
                "scope": 9676,
                "src": "819:212:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9548,
                  "nodeType": "Block",
                  "src": "1089:47:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 9544,
                              "name": "this",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -28,
                              "src": "1115:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_WETH9_$9676",
                                "typeString": "contract WETH9"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_WETH9_$9676",
                                "typeString": "contract WETH9"
                              }
                            ],
                            "id": 9543,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "1107:7:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": {
                              "id": 9542,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "1107:7:24",
                              "typeDescriptions": {
                                "typeIdentifier": null,
                                "typeString": null
                              }
                            }
                          },
                          "id": 9545,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "1107:13:24",
                          "tryCall": false,
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "id": 9546,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "memberName": "balance",
                        "nodeType": "MemberAccess",
                        "referencedDeclaration": null,
                        "src": "1107:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "functionReturnParameters": 9541,
                      "id": 9547,
                      "nodeType": "Return",
                      "src": "1100:28:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "18160ddd",
                "id": 9549,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "totalSupply",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9538,
                  "nodeType": "ParameterList",
                  "parameters": [],
                  "src": "1059:2:24"
                },
                "returnParameters": {
                  "id": 9541,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9540,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9549,
                      "src": "1083:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9539,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1083:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1082:6:24"
                },
                "scope": 9676,
                "src": "1039:97:24",
                "stateMutability": "view",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9576,
                  "nodeType": "Block",
                  "src": "1206:119:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9565,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "id": 9558,
                              "name": "allowance",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9481,
                              "src": "1217:9:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                "typeString": "mapping(address => mapping(address => uint256))"
                              }
                            },
                            "id": 9562,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9559,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1227:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9560,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1227:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1217:21:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9563,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9561,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9551,
                            "src": "1239:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1217:26:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9564,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9553,
                          "src": "1246:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1217:32:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9566,
                      "nodeType": "ExpressionStatement",
                      "src": "1217:32:24"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9568,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1274:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9569,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1274:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9570,
                            "name": "guy",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9551,
                            "src": "1286:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9571,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9553,
                            "src": "1291:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9567,
                          "name": "Approval",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9451,
                          "src": "1265:8:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9572,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1265:30:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9573,
                      "nodeType": "EmitStatement",
                      "src": "1260:35:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 9574,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1313:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 9557,
                      "id": 9575,
                      "nodeType": "Return",
                      "src": "1306:11:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "095ea7b3",
                "id": 9577,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "approve",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9554,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9551,
                      "mutability": "mutable",
                      "name": "guy",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9577,
                      "src": "1161:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9550,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1161:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9553,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9577,
                      "src": "1174:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9552,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1174:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1160:23:24"
                },
                "returnParameters": {
                  "id": 9557,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9556,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9577,
                      "src": "1200:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9555,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1200:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1199:6:24"
                },
                "scope": 9676,
                "src": "1144:181:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9593,
                  "nodeType": "Block",
                  "src": "1396:60:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9587,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1427:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9588,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1427:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9589,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9579,
                            "src": "1439:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9590,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9581,
                            "src": "1444:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9586,
                          "name": "transferFrom",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9675,
                          "src": "1414:12:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_internal_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$_t_bool_$",
                            "typeString": "function (address,address,uint256) returns (bool)"
                          }
                        },
                        "id": 9591,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1414:34:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "functionReturnParameters": 9585,
                      "id": 9592,
                      "nodeType": "Return",
                      "src": "1407:41:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "a9059cbb",
                "id": 9594,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transfer",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9582,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9579,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9594,
                      "src": "1351:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9578,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1351:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9581,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9594,
                      "src": "1364:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9580,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1364:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1350:23:24"
                },
                "returnParameters": {
                  "id": 9585,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9584,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9594,
                      "src": "1390:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9583,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1390:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1389:6:24"
                },
                "scope": 9676,
                "src": "1333:123:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              },
              {
                "body": {
                  "id": 9674,
                  "nodeType": "Block",
                  "src": "1567:382:24",
                  "statements": [
                    {
                      "expression": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "commonType": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "id": 9610,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "leftExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9606,
                                "name": "balanceOf",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9475,
                                "src": "1586:9:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                  "typeString": "mapping(address => uint256)"
                                }
                              },
                              "id": 9608,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9607,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9596,
                                "src": "1596:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1586:14:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "nodeType": "BinaryOperation",
                            "operator": ">=",
                            "rightExpression": {
                              "argumentTypes": null,
                              "id": 9609,
                              "name": "wad",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 9600,
                              "src": "1604:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "src": "1586:21:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "hexValue": "",
                            "id": 9611,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "string",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "1609:2:24",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            },
                            "value": ""
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            {
                              "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                              "typeString": "literal_string \"\""
                            }
                          ],
                          "id": 9605,
                          "name": "require",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [
                            -18,
                            -18
                          ],
                          "referencedDeclaration": -18,
                          "src": "1578:7:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                            "typeString": "function (bool,string memory) pure"
                          }
                        },
                        "id": 9612,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1578:34:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9613,
                      "nodeType": "ExpressionStatement",
                      "src": "1578:34:24"
                    },
                    {
                      "condition": {
                        "argumentTypes": null,
                        "commonType": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "id": 9630,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 9617,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 9614,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9596,
                            "src": "1629:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "expression": {
                              "argumentTypes": null,
                              "id": 9615,
                              "name": "msg",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": -15,
                              "src": "1636:3:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_magic_message",
                                "typeString": "msg"
                              }
                            },
                            "id": 9616,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "lValueRequested": false,
                            "memberName": "sender",
                            "nodeType": "MemberAccess",
                            "referencedDeclaration": null,
                            "src": "1636:10:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address_payable",
                              "typeString": "address payable"
                            }
                          },
                          "src": "1629:17:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "nodeType": "BinaryOperation",
                        "operator": "&&",
                        "rightExpression": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          },
                          "id": 9629,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "baseExpression": {
                              "argumentTypes": null,
                              "baseExpression": {
                                "argumentTypes": null,
                                "id": 9618,
                                "name": "allowance",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9481,
                                "src": "1650:9:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                  "typeString": "mapping(address => mapping(address => uint256))"
                                }
                              },
                              "id": 9620,
                              "indexExpression": {
                                "argumentTypes": null,
                                "id": 9619,
                                "name": "src",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9596,
                                "src": "1660:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "isConstant": false,
                              "isLValue": true,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "IndexAccess",
                              "src": "1650:14:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                "typeString": "mapping(address => uint256)"
                              }
                            },
                            "id": 9623,
                            "indexExpression": {
                              "argumentTypes": null,
                              "expression": {
                                "argumentTypes": null,
                                "id": 9621,
                                "name": "msg",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": -15,
                                "src": "1665:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_magic_message",
                                  "typeString": "msg"
                                }
                              },
                              "id": 9622,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "memberName": "sender",
                              "nodeType": "MemberAccess",
                              "referencedDeclaration": null,
                              "src": "1665:10:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address_payable",
                                "typeString": "address payable"
                              }
                            },
                            "isConstant": false,
                            "isLValue": true,
                            "isPure": false,
                            "lValueRequested": false,
                            "nodeType": "IndexAccess",
                            "src": "1650:26:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "!=",
                          "rightExpression": {
                            "argumentTypes": null,
                            "arguments": [
                              {
                                "argumentTypes": null,
                                "id": 9627,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "UnaryOperation",
                                "operator": "-",
                                "prefix": true,
                                "src": "1685:2:24",
                                "subExpression": {
                                  "argumentTypes": null,
                                  "hexValue": "31",
                                  "id": 9626,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1686:1:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_1_by_1",
                                    "typeString": "int_const 1"
                                  },
                                  "value": "1"
                                },
                                "typeDescriptions": {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              }
                            ],
                            "expression": {
                              "argumentTypes": [
                                {
                                  "typeIdentifier": "t_rational_minus_1_by_1",
                                  "typeString": "int_const -1"
                                }
                              ],
                              "id": 9625,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "lValueRequested": false,
                              "nodeType": "ElementaryTypeNameExpression",
                              "src": "1680:4:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_type$_t_uint256_$",
                                "typeString": "type(uint256)"
                              },
                              "typeName": {
                                "id": 9624,
                                "name": "uint",
                                "nodeType": "ElementaryTypeName",
                                "src": "1680:4:24",
                                "typeDescriptions": {
                                  "typeIdentifier": null,
                                  "typeString": null
                                }
                              }
                            },
                            "id": 9628,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "typeConversion",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "1680:8:24",
                            "tryCall": false,
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          },
                          "src": "1650:38:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "src": "1629:59:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "falseBody": null,
                      "id": 9653,
                      "nodeType": "IfStatement",
                      "src": "1625:186:24",
                      "trueBody": {
                        "id": 9652,
                        "nodeType": "Block",
                        "src": "1690:121:24",
                        "statements": [
                          {
                            "expression": {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "commonType": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  },
                                  "id": 9639,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "leftExpression": {
                                    "argumentTypes": null,
                                    "baseExpression": {
                                      "argumentTypes": null,
                                      "baseExpression": {
                                        "argumentTypes": null,
                                        "id": 9632,
                                        "name": "allowance",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9481,
                                        "src": "1713:9:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                          "typeString": "mapping(address => mapping(address => uint256))"
                                        }
                                      },
                                      "id": 9634,
                                      "indexExpression": {
                                        "argumentTypes": null,
                                        "id": 9633,
                                        "name": "src",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 9596,
                                        "src": "1723:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_address",
                                          "typeString": "address"
                                        }
                                      },
                                      "isConstant": false,
                                      "isLValue": true,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "nodeType": "IndexAccess",
                                      "src": "1713:14:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                        "typeString": "mapping(address => uint256)"
                                      }
                                    },
                                    "id": 9637,
                                    "indexExpression": {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 9635,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": -15,
                                        "src": "1728:3:24",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 9636,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "1728:10:24",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    },
                                    "isConstant": false,
                                    "isLValue": true,
                                    "isPure": false,
                                    "lValueRequested": false,
                                    "nodeType": "IndexAccess",
                                    "src": "1713:26:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "nodeType": "BinaryOperation",
                                  "operator": ">=",
                                  "rightExpression": {
                                    "argumentTypes": null,
                                    "id": 9638,
                                    "name": "wad",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9600,
                                    "src": "1743:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_uint256",
                                      "typeString": "uint256"
                                    }
                                  },
                                  "src": "1713:33:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  }
                                },
                                {
                                  "argumentTypes": null,
                                  "hexValue": "",
                                  "id": 9640,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "1748:2:24",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  },
                                  "value": ""
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_bool",
                                    "typeString": "bool"
                                  },
                                  {
                                    "typeIdentifier": "t_stringliteral_c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470",
                                    "typeString": "literal_string \"\""
                                  }
                                ],
                                "id": 9631,
                                "name": "require",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [
                                  -18,
                                  -18
                                ],
                                "referencedDeclaration": -18,
                                "src": "1705:7:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_require_pure$_t_bool_$_t_string_memory_ptr_$returns$__$",
                                  "typeString": "function (bool,string memory) pure"
                                }
                              },
                              "id": 9641,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "1705:46:24",
                              "tryCall": false,
                              "typeDescriptions": {
                                "typeIdentifier": "t_tuple$__$",
                                "typeString": "tuple()"
                              }
                            },
                            "id": 9642,
                            "nodeType": "ExpressionStatement",
                            "src": "1705:46:24"
                          },
                          {
                            "expression": {
                              "argumentTypes": null,
                              "id": 9650,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftHandSide": {
                                "argumentTypes": null,
                                "baseExpression": {
                                  "argumentTypes": null,
                                  "baseExpression": {
                                    "argumentTypes": null,
                                    "id": 9643,
                                    "name": "allowance",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9481,
                                    "src": "1766:9:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_mapping$_t_address_$_t_mapping$_t_address_$_t_uint256_$_$",
                                      "typeString": "mapping(address => mapping(address => uint256))"
                                    }
                                  },
                                  "id": 9647,
                                  "indexExpression": {
                                    "argumentTypes": null,
                                    "id": 9644,
                                    "name": "src",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": 9596,
                                    "src": "1776:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_address",
                                      "typeString": "address"
                                    }
                                  },
                                  "isConstant": false,
                                  "isLValue": true,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "nodeType": "IndexAccess",
                                  "src": "1766:14:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                                    "typeString": "mapping(address => uint256)"
                                  }
                                },
                                "id": 9648,
                                "indexExpression": {
                                  "argumentTypes": null,
                                  "expression": {
                                    "argumentTypes": null,
                                    "id": 9645,
                                    "name": "msg",
                                    "nodeType": "Identifier",
                                    "overloadedDeclarations": [],
                                    "referencedDeclaration": -15,
                                    "src": "1781:3:24",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_magic_message",
                                      "typeString": "msg"
                                    }
                                  },
                                  "id": 9646,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "lValueRequested": false,
                                  "memberName": "sender",
                                  "nodeType": "MemberAccess",
                                  "referencedDeclaration": null,
                                  "src": "1781:10:24",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_address_payable",
                                    "typeString": "address payable"
                                  }
                                },
                                "isConstant": false,
                                "isLValue": true,
                                "isPure": false,
                                "lValueRequested": true,
                                "nodeType": "IndexAccess",
                                "src": "1766:26:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "nodeType": "Assignment",
                              "operator": "-=",
                              "rightHandSide": {
                                "argumentTypes": null,
                                "id": 9649,
                                "name": "wad",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 9600,
                                "src": "1796:3:24",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_uint256",
                                  "typeString": "uint256"
                                }
                              },
                              "src": "1766:33:24",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "id": 9651,
                            "nodeType": "ExpressionStatement",
                            "src": "1766:33:24"
                          }
                        ]
                      }
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9658,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9654,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9475,
                            "src": "1823:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9656,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9655,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9596,
                            "src": "1833:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1823:14:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "-=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9657,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9600,
                          "src": "1841:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1823:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9659,
                      "nodeType": "ExpressionStatement",
                      "src": "1823:21:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "id": 9664,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "lValueRequested": false,
                        "leftHandSide": {
                          "argumentTypes": null,
                          "baseExpression": {
                            "argumentTypes": null,
                            "id": 9660,
                            "name": "balanceOf",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9475,
                            "src": "1855:9:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_mapping$_t_address_$_t_uint256_$",
                              "typeString": "mapping(address => uint256)"
                            }
                          },
                          "id": 9662,
                          "indexExpression": {
                            "argumentTypes": null,
                            "id": 9661,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9598,
                            "src": "1865:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "isConstant": false,
                          "isLValue": true,
                          "isPure": false,
                          "lValueRequested": true,
                          "nodeType": "IndexAccess",
                          "src": "1855:14:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "nodeType": "Assignment",
                        "operator": "+=",
                        "rightHandSide": {
                          "argumentTypes": null,
                          "id": 9663,
                          "name": "wad",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9600,
                          "src": "1873:3:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_uint256",
                            "typeString": "uint256"
                          }
                        },
                        "src": "1855:21:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "id": 9665,
                      "nodeType": "ExpressionStatement",
                      "src": "1855:21:24"
                    },
                    {
                      "eventCall": {
                        "argumentTypes": null,
                        "arguments": [
                          {
                            "argumentTypes": null,
                            "id": 9667,
                            "name": "src",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9596,
                            "src": "1903:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9668,
                            "name": "dst",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9598,
                            "src": "1908:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          {
                            "argumentTypes": null,
                            "id": 9669,
                            "name": "wad",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 9600,
                            "src": "1913:3:24",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          }
                        ],
                        "expression": {
                          "argumentTypes": [
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            }
                          ],
                          "id": 9666,
                          "name": "Transfer",
                          "nodeType": "Identifier",
                          "overloadedDeclarations": [],
                          "referencedDeclaration": 9459,
                          "src": "1894:8:24",
                          "typeDescriptions": {
                            "typeIdentifier": "t_function_event_nonpayable$_t_address_$_t_address_$_t_uint256_$returns$__$",
                            "typeString": "function (address,address,uint256)"
                          }
                        },
                        "id": 9670,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": false,
                        "kind": "functionCall",
                        "lValueRequested": false,
                        "names": [],
                        "nodeType": "FunctionCall",
                        "src": "1894:23:24",
                        "tryCall": false,
                        "typeDescriptions": {
                          "typeIdentifier": "t_tuple$__$",
                          "typeString": "tuple()"
                        }
                      },
                      "id": 9671,
                      "nodeType": "EmitStatement",
                      "src": "1889:28:24"
                    },
                    {
                      "expression": {
                        "argumentTypes": null,
                        "hexValue": "74727565",
                        "id": 9672,
                        "isConstant": false,
                        "isLValue": false,
                        "isPure": true,
                        "kind": "bool",
                        "lValueRequested": false,
                        "nodeType": "Literal",
                        "src": "1937:4:24",
                        "subdenomination": null,
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "value": "true"
                      },
                      "functionReturnParameters": 9604,
                      "id": 9673,
                      "nodeType": "Return",
                      "src": "1930:11:24"
                    }
                  ]
                },
                "documentation": null,
                "functionSelector": "23b872dd",
                "id": 9675,
                "implemented": true,
                "kind": "function",
                "modifiers": [],
                "name": "transferFrom",
                "nodeType": "FunctionDefinition",
                "overrides": null,
                "parameters": {
                  "id": 9601,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9596,
                      "mutability": "mutable",
                      "name": "src",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9675,
                      "src": "1486:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9595,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1486:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9598,
                      "mutability": "mutable",
                      "name": "dst",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9675,
                      "src": "1499:11:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_address",
                        "typeString": "address"
                      },
                      "typeName": {
                        "id": 9597,
                        "name": "address",
                        "nodeType": "ElementaryTypeName",
                        "src": "1499:7:24",
                        "stateMutability": "nonpayable",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    },
                    {
                      "constant": false,
                      "id": 9600,
                      "mutability": "mutable",
                      "name": "wad",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9675,
                      "src": "1512:8:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_uint256",
                        "typeString": "uint256"
                      },
                      "typeName": {
                        "id": 9599,
                        "name": "uint",
                        "nodeType": "ElementaryTypeName",
                        "src": "1512:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_uint256",
                          "typeString": "uint256"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1485:36:24"
                },
                "returnParameters": {
                  "id": 9604,
                  "nodeType": "ParameterList",
                  "parameters": [
                    {
                      "constant": false,
                      "id": 9603,
                      "mutability": "mutable",
                      "name": "",
                      "nodeType": "VariableDeclaration",
                      "overrides": null,
                      "scope": 9675,
                      "src": "1556:4:24",
                      "stateVariable": false,
                      "storageLocation": "default",
                      "typeDescriptions": {
                        "typeIdentifier": "t_bool",
                        "typeString": "bool"
                      },
                      "typeName": {
                        "id": 9602,
                        "name": "bool",
                        "nodeType": "ElementaryTypeName",
                        "src": "1556:4:24",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        }
                      },
                      "value": null,
                      "visibility": "internal"
                    }
                  ],
                  "src": "1555:6:24"
                },
                "scope": 9676,
                "src": "1464:485:24",
                "stateMutability": "nonpayable",
                "virtual": false,
                "visibility": "public"
              }
            ],
            "scope": 9677,
            "src": "65:1887:24"
          }
        ],
        "src": "37:37750:24"
      }
    }
  },
  "sourceList": [
    "contracts/FeSwapERC20.sol",
    "contracts/FeSwapFactory.sol",
    "contracts/FeSwapPair.sol",
    "contracts/FeSwapRouter.sol",
    "contracts/interfaces/IERC20.sol",
    "contracts/interfaces/IFeSwapCallee.sol",
    "contracts/interfaces/IFeSwapERC20.sol",
    "contracts/interfaces/IFeSwapFactory.sol",
    "contracts/interfaces/IFeSwapPair.sol",
    "contracts/interfaces/IFeSwapRouter.sol",
    "contracts/interfaces/IFeswaNFT.sol",
    "contracts/interfaces/IWETH.sol",
    "contracts/libraries/Babylonian.sol",
    "contracts/libraries/FeSwapLibrary.sol",
    "contracts/libraries/FeSwapOracleLibrary.sol",
    "contracts/libraries/FixedPoint.sol",
    "contracts/libraries/Math.sol",
    "contracts/libraries/SafeMath.sol",
    "contracts/libraries/TransferHelper.sol",
    "contracts/libraries/UQ112x112.sol",
    "contracts/simu/FeSwapSimu.sol",
    "contracts/test/DeflatingERC20.sol",
    "contracts/test/ERC20.sol",
    "contracts/test/RouterEventEmitter.sol",
    "contracts/test/WETH9.sol"
  ]
}